printk函数

printf函数介绍:

        Linux 内核中没有 printf 这个函数,在Linux内核中使用printk来显示要打印的字符串,也可以这样说,printf运行在用户态, printk 运行在内核态。printk用法与printf相似,唯一不同之处是printk 可以根据日志级别对消息进行分类,也就是说printk具有打印级别。printk一共有 8 个消息级
别,这 8 个消息级别定义在文件 include/linux/kern_levels.h 里面,定义如下:

#define KERN_SOH "\001"
#define KERN_EMERG KERN_SOH "0"   /* 紧急事件,一般是内核崩溃 */
#define KERN_ALERT KERN_SOH "1"   /* 必须立即采取行动 */
#define KERN_CRIT KERN_SOH "2"    /* 临界条件,比如严重的软件或硬件错误*/
#define KERN_ERR KERN_SOH "3"     /* 错误状态,一般设备驱动程序中使用KERN_ERR 报告硬件错误 */
#define KERN_WARNING KERN_SOH "4" /* 警告信息,不会对系统造成严重影响 */
#define KERN_NOTICE KERN_SOH "5"  /* 有必要进行提示的一些信息 */
#define KERN_INFO KERN_SOH "6"    /* 提示性的信息 */
#define KERN_DEBUG KERN_SOH "7"   /* 调试信息 */

        数字越小级别越高,即“0”级别最高,“7”的级别最低。使用方法如下:

printk(KERN_EMERG "this is memrg\n");        //打印级别为“0”

         该代码的打印等级设置为“KERN_EMERG”即级别为“0”。当没有设置打印级别时printk函数默认打印级别为“4”

printk( "this is memrg\n");        //默认打印级别为“4”

         那么这个打印级别到底是干什么用的呢,其实就是控制printk的内容是否在终端上打印出来,printk函数的打印级别称为日志级别,在终端也有一个控制台级别,当printk的日志级别低于控制台级别时printf的内容则不会被打印到终端上。

        控制台级别定义在/proc/sys/kernel/printk中,通cat可以查看文件中有四个数字

lhf@ubuntu:~$ cat /proc/sys/kernel/printk
4    4    1    7

         这四个数字与控制台级别的设置相关,

第一个:控制台日志级别,优先级高于该值的消息将在控制台显示

第二个:默认消息日志级别,printk没定义优先级时,打印这个优先级以上的消息

第三个:最小控制台日志级别,控制台日志级别可被设置的最小值(最高优先级)

第四个:默认的控制台日志级别

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值