驱动资料

来源:互联网 发布:胜通软件多少钱 编辑:程序博客网 时间:2024/05/17 09:45
Printk在终端显示
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为要写入的值,可改变)。

原创粉丝点击