38.linux内核打印等级
·
在插入ko时,都是用dmesg去查看打印信息
dmseg
dmesg #打印内核信息
dmesg -C #清楚内核打印信息
dmesg -c #打印并清除
dmesg | grep usb #筛选出带usb的信息
那有没有什么方法直接显示打印呢?有的,兄弟,有的
使用如下命令去查看打印等级
cat /proc/sys/kernel/printk
4 4 1 7
那这些打印出来的数字代表什么意思呢?
我们查看这个路径的源码kernel/printk/printk.c

可知:
4 代表控制台打印等级
4 代表默认消息打印等级
1 代表最小控制台打印等级
7 代表默认控制台打印等级
数字越小,等级越高,insmod的ko之所以不能直接打印printk的信息,是因为默认打印消息没能小于控制台打印消息,所以要改变printk的打印等级
在这个路径下include/linux/kern_levels.h对应着打印等级对应的宏定义

方法一:调用printk时设置打印等级
printk("KERN_EMERG")
#include <linux/module.h>
#include <linux/init.h>
static int helloworld_init(void){
printk(KERN_EMERG "hello world\n");
return 0;
}
static void helloworld_exit(void){
printk("bye hello world\n");
}
module_init(helloworld_init);
module_exit(helloworld_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("quan");
MODULE_VERSION("v1.0");
qemu测试,符合预期
[root@user mnt]# insmod print_level.ko
[ 319.139491] hello world
[root@user mnt]# rmmod print_level.ko
[root@user mnt]#
方法二:使用echo直接修改打印等级
echo 0 4 1 7 > /proc/sys/kernel/printk #都不打印
echo 7 4 1 7 > /proc/sys/kernel/printk #全打印
方法三: 通过menuconfig设置打印

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)