Printk在终端显示
printk()函数为内核空间里边的信息打印函数,就像c编程时用的printf()函数一样,专供内核中的信息展示用,他没有调用printf()的原因是在编译内核时还没有c的库函数可以供调用。
/var/log/messages里的信息可以使用 cat /var/log/messages 进行查看。 控制台的日志级别可以使用 cat /peoc/sys/kernel/printk 查看。
控制台的日志级别可以用 echo 3 > /peoc/sys/kernel/printk 改变(3为要写入的值,可改变)。
printk()函数为内核空间里边的信息打印函数,就像c编程时用的printf()函数一样,专供内核中的信息展示用,他没有调用printf()的原因是在编译内核时还没有c的库函数可以供调用。
在linux中,可以像使用printf()一样使用printk(),也可以加上优先级使用,比如如下: printk(KERN_ALERT "LCD light exit.\n"); printk()函数有八个优先级定义,如下:
#define KERN_EMERG "<0>" /* system is unusable */
#define KERN_ALERT "<1>" /* action must be taken immediately */
#define KERN_CRIT "<2>" /* critical conditions */
#define KERN_ERR "<3>" /* error conditions */
#define KERN_WARNING "<4>" /* warning conditions */
#define KERN_NOTICE "<5>" /* normal but significant condition */
define KERN_INFO "<6>" /* informational */
#define KERN_DEBUG "<7>" /* debug-level messages */
当printk()优先级低于int console_loglevel,信息将直接打印在你的终端上(x 环境下好像不行)。如果同时 syslogd和klogd都在运行,信息也同时添加在文件 /var/log/messages,而不管是否显示在控制台上与否。我们使用像 KERN_ALERT这样的高优先级,来确保printk()将信息输出到 控制台而不是只是添加到日志文件中。 当你编写真正的实用的模块时,你应该针对可能遇到的情况使用合适的优先级。/var/log/messages里的信息可以使用 cat /var/log/messages 进行查看。 控制台的日志级别可以使用 cat /peoc/sys/kernel/printk 查看。
控制台的日志级别可以用 echo 3 > /peoc/sys/kernel/printk 改变(3为要写入的值,可改变)。