内核打印函数printk

printk VS printf:

相同点:都是用于打印输出信息,使用一致
不同点:前者在内核中使用,后者在应用程序中使用

printk函数的特点

1.能够指定打印输出级别,有0~7共8级

使用案例:
printk (KERN_ERR, “this is a error message\n”);
printk (“<3>”, “this is a error message\n”) ;

指定打印输出级别的目的就是为将来有些信息能够做输出处理;此时需要指定一个默认的打印输出级别来指定信息是否需要输出到终端上:

如果默认的打印输出级别比如为4,那么printk指定的打印输出级别如果小于4,那么信息一律输出到终端上;
如果printk指定的打印输出级别大于等于4,那么信息一律不做输出;

默认的打印输出级别如何设置呢?

默认的打印输出级别的设置方法有两种

方法1:
通过修改配置文件来指定默认的打印输出级别
/proc/sys/kernel/printk
方法2:
第一种方法虽然能够设置默认的打印输出级别,但是对于内核启动时的打印输出信息,这种方法不能使用;
并且/proc目录作为procfs虚拟文件系统的入口, /proc目录下的内容都是存在于内存中,掉电就丢失。
对于内核的启动信息,可以利用方法2来指定:
实施步骤:
只需要在内核的启动参数中添加以下选项即可: debug / quiet / loglevel=数字

编写内核程序, 掌握printk的使用

实施步骤:
1.mkdir /opt/drivers/4.0
2.cd /opt/drivers/4.0
3.vim printk_all.c
4.vim Makefile
5.make
6.cp printk_all.ko /opt/rootfs

ARM执行:
1.insmod printk_all.ko
2.rmmod printk_all
3.cat /proc/sys/kernel/printk //获取默认的打印输出级别
7(默认终端打印输出级别) 4 1 7
4.echo 8 > /proc/sys/kernel/printk
5.insmod printk_all.ko
6.rmmod printk_all

printk_all.c如下:

#include <linux/init.h>
#include <linux/module.h>

static int printkall_init(void)
{
    printk("<0>" "level 0!\n");
    printk("<1>" "level 1!\n");
    printk("<2>" "level 2!\n");
    printk("<3>" "level 3!\n");
    printk("<4>" "level 4!\n");
    printk("<5>" "level 5!\n");
    printk("<6>" "level 6!\n");
    printk("<7>" "level 7!\n");
    return 0;
}

static void printkall_exit(void)
{
    printk("<0>" "level 0!\n");
    printk("<1>" "level 1!\n");
    printk("<2>" "level 2!\n");
    printk("<3>" "level 3!\n");
    printk("<4>" "level 4!\n");
    printk("<5>" "level 5!\n");
    printk("<6>" "level 6!\n");
    printk("<7>" "level 7!\n");

}
module_init(printkall_init);
module_exit(printkall_exit);
MODULE_LICENSE("GPL");
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值