内核调试函数printk()

本文介绍了Linux内核中的调试函数printk(),它不支持浮点数运算,并具有日志级别功能。printk()通过预定义的宏设定不同级别,如KERN_EMERG、KERN_INFO等,用于输出不同严重程度的信息。默认级别为KERN_WARNING。控制台日志级别可通过/proc/sys/kernel/printk调整,低于该级别的信息将显示。printk()输出的信息也可通过/proc/kmsg或dmesg查看,甚至被syslogd或klogd记录到/var/log/messages.log。
摘要由CSDN通过智能技术生成

内核模式下系统信息输出函数printk() 与用户模式下printf()函数在输出内容上是有区别的,第一:内核在切换模式时不保存处理器的浮点状态,因此printk()并不支持浮点数运算;第二:printk()可以指定一个记录级别,内核根据这个级别来判断是否在终端上打印消息,而printf()则不要。

内核通过 printk() 输出的信息具有日志级别,日志级别是通过在 printk() 输出的字符串前加一个带尖括号的整数来控制的,如 printk("<6>Hello, world!\n");。内核中共提供了八种不同的日志级别,在 include/linux/kernel.h 中有相应的宏对应。

#define KERN_EMERG "<0>" /* system is unusable */    //是最高优先输出的紧急事件消息,OS崩溃前输出提示消息
#define KERN_ALERT "<1>" /* action must be taken immediately */  //输出警告消息,通知需要采取措施
#define KERN_CRIT "<2>" /* critical conditions */   //发生严重的软件或者硬件操作失败时,进行输出提示
#define KERN_ERR "<3>" /* error conditions */   //设备驱动程序常常用KERN_ERR来报告硬件错误信息
#define KERN_WARNING "<4>" /* warning

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值