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 */

Leave a Reply

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