Debug levels for Linux kernel PrintK

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 */
READ  Debugging using C macros __FILE__ and __func__ and __LINE__

Leave a Reply

Your email address will not be published. Required fields are marked *