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



当程序代码编写好时很少不会出错误,这个时候就要用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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值