为了确认内核打印等级以及prink 参数对打印的分级,在led驱动初始化代码【以及exit出口】加入如下代码。
每次insmod 、rmmod led模块时,根据打印等级的设置,得到不同的打印结果:
static int __init s3c24xx_leds_init()
{
int ret ;
int minor = 0 ;
printk(KERN_EMERG " 1111111 KERN_EMERG\n");
printk(KERN_ALERT " 2222 KERN_ALERT\n");
printk(KERN_CRIT " 3333333 KERN_CRIT\n");
printk(KERN_ERR " 44444444 KERN_ERR\n");
printk(KERN_WARNING " 55555 KERN_WARNING\n");
printk(KERN_NOTICE " 66666 KERN_NOTICE\n");
printk(KERN_INFO " 77777 KERN_INFO\n");
printk(KERN_DEBUG " 888888 KERN_DEBUG\n");
printk(" 9999 no_fix\n");
…
}
操作:
一次性地设置编译内核源码时默认的打印级数:【它们在kernel/printk.c中定义】
echo 8 4 1 7 > /proc/sys/kernel/printk
8. 为KERN_DEBUG
# echo 8 4 1 7 > /proc/sys/kernel/printk
# insmod myleds_new.ko
1111111 KERN_EMERG
2222 KERN_ALERT
3333333 KERN_CRIT
44444444 KERN_ERR
55555 KERN_WARNING
66666 KERN_NOTICE
77777 KERN_INFO
888888 KERN_DEBUG
9999 no_fix
7. 为默认
#cat /proc/sys/kernel/printk