使用printk()函数调试设备驱动程序

来源:互联网 发布:在线音乐转换格式软件 编辑:程序博客网 时间:2024/05/29 18:47


当程序代码编写好时很少不会出错误,这个时候就要用printk()函数来调试了。

该函数的功能与printf()差不多,但是,它只能由内核例程来调试,该函数在kernel/printk.c中实现,原型如下:

int printk(const char *fmt,…);


printk()函数的使用方法与printf()基本相同,但参数的第一个位置可以使用表示信息重要性的宏,这些宏称为“日志级别”。


include/linux/kernel.h文件的第31~38行定义了代表8种不同级别的宏,第43行定义了默认(即在使用printk()函数时没有使用宏)采用的日志级别为KERN_WARING

以下是内核中定义的宏:

Include/linux/kernel.h

31     #define KERN_EMERG”<0>”   /*system no longer useble*/

32     #define KERN_ALERT”<1>”    /* action to be terminated at once*/

33     #define KERN_CRIT”<2>”      /*critical condition*/

34     #define KERN_ERR”<3>”     /*error*/

35     #define KERN_WARNING”<4>”  /*warning*/

36     #define KERN_NOTICE”<5>”     /*normal,but noteworthy*/

37     #define KERN_INFO”<6>”        /*information*/

38     #define KERN_DEBUG”<7>”       /*debug level*/

43     #define default_message_loglevel(console_printk[1])

 


kernel/printk.c中定义的console_printk[1]4

kernel/printk.c

49     #define DEFAULT_MESSAGE_LOGLEVEL 4     /*KERN_WARNING*/

57      int console_printk[4]={

58          DEFAULT_CONSOLE_LOGLEVEL,      /*console_loglevel*/

59          DEFAULT_MESSAGE_LOGLEVEL,      /*default_ message_loglevel*/

60          MINIMUM_CONSOLE_LOGLEVEL,      /*minimum_console_loglevel*/

61          DEFAULT_CONSOLE_LOGLEVEL,        /*default_console_loglevel*/

62       };

2 0
原创粉丝点击