If you have already tried to write the first kernel module from port “Writing first Linux kernel Module and understanding Kernel module compilation, loading and unloading” , you might have seen that in Linux kernel we used “printk” whereas we use “printf” into the application programs.
Application printf example,
char *message = "Hello World"
printf("This is string : %s\n", message);
Whereas, same code if we want to write in kernel we have to write it as,
char *message = "Hello World"
printk(KERN_INFO "This is string : %s\n", message);
Notice the difference that printk adds “KERN_INFO” which is debugging level for the kernel messages. So, there are total 8 debugging levels for the kernel printks as defined in source file, include/linux/kern_levels.h
#define KERN_EMERG KERN_SOH "0" /* system is unusable */
#define KERN_ALERT KERN_SOH "1" /* action must be taken immediately */
#define KERN_CRIT KERN_SOH "2" /* critical conditions */
#define KERN_ERR KERN_SOH "3" /* error conditions */
#define KERN_WARNING KERN_SOH "4" /* warning conditions */
#define KERN_NOTICE KERN_SOH "5" /* normal but significant condition */
#define KERN_INFO KERN_SOH "6" /* informational */
#define KERN_DEBUG KERN_SOH "7" /* debug-level messages */
#define KERN_DEFAULT KERN_SOH "d" /* the default kernel loglevel */