一.函数介绍
printk可以将信息输出到各种不同的设备和位置,例如控制台、串口、日志文件等。printk函数的输出会被写入内核的环形缓冲区中,并由一个或多个后台进程将其传输到目标设备或位置。可以使用dmesg命令来查看内核环形缓冲区中的输出消息,也可以将printk输出重定向到其他设备或位置,例如串口或日志文件。
通俗易懂来说就是在内核中打印Log方便开发人员调试。
函数在以下内核代码中:
include/linux/printk.h
二.函数用法
例:在内核函数vfs_getattr_nosec中插入一条Log
printk(KERN_INFO "----------xxxxxxxxxxxxxxxxxxxxxx");
这里前面的KERN_INFO是日志级别,可以根据自己的需求去选择级别,日志级别对应如下:
Loglevel | Description |
---|---|
KERN_EMERG | |
KERN_ALERT | |
KERN_CRIT | |
KERN_ERR | |
KERN_WARNING | |
KERN_NOTICE | |
KERN_INFO | |
KERN_DEBUG | A debug messagetypically superfluous |
三.函数使用
printk打印的内容会在内核缓冲区里
所以可以使用dmesg来查看效果
我们编译好内核刷入手机后 手机连接电脑 打开cmd命令行
输入命令 dmesg| grep xxxxx 在内核缓冲区中搜索我们打印的log,可以看到此时我们打印的log已经显示出来了。
四.总结
在编译内核代码时使用printk可以帮助我们调试应用,找到问题去解决问题。