首页 > 编程知识 正文

linux内核头文件,linux中select函数

时间:2023-05-05 11:40:42 阅读:165241 作者:1023

printk是内核状态信息打印函数,具有与准c库的printf相似的功能。

printk还有信息打印水平。

函数原型:

intprintk(constchar*fmt,) )。

所需的头文件:

#包含

消息打印级别----消息级别:

#defineKERN_EMERG'0'

#defineKERN_ALERT'1'

#defineKERN_CRIT'2'

#defineKERN_ERR'3'

#define

KERN_WARNING'4'

#defineKERN_NOTICE'5'

#defineKERN_INFO'6'

#defineKERN_DEBUG'7'

不同级别的字符串表示不同,数字越小级别越高。 printk输出与输出的日志级别有关,如果输出日志级别高于控制台级别,则显示在控制台上,否则记录在/var/log/message中。 但是,如果系统同时运行klogd和syslogd,则会将其添加到/var/log/message .中

注意:要正常输出,必须打开klogd和syslogd服务。 您可以在klogd中更改系统消息的输出级别。

为什么在linux0.11上在内核状态下使用printk (函数,在用户状态下使用printf )函数? (1) printk ) )函数直接使用了写入终端的函数tty_write )。 另一方面,调用printf (函数为write )系统调用函数写入标准输出设备。 因此,虽然在用户状态(如进程0 )下无法直接使用printk ) )函数,但由于内核状态下已经是权限级别,因此不需要使用系统调用来更改权限级别,而是直接使用printk ) )

printk是内核输出,在终端中看不到。 请看系统日志。 /var/log/message。 或者使用dmesg命令进行查看

你可能会怎么想,printk () )

它不是为了与用户交互而设计的。 虽然我们在hello-1中将它用于这样的目的! 实际上,它为内核提供日志功能,记录内核信息并发出警告。 因此,每个printk () )

声明具有优先级,例如1和KERN_ALERT。 内核总共定义了8个优先级宏。

所以没有必要使用模糊的数字代码,可以从文件linux/kernel.h中

看这些宏观及其含义。 如果不指定优先级,则使用缺省优先级DEFAULT_MESSAGE_LOGLEVEL。

请阅读这些优先级宏。 头文件还描述了每个优先级的含义。 实际上,

像4一样,用宏而不是数字。 像KERN_WARNING一样使用宏。

如果优先级低于intconsole_loglevel,则信息将直接打印在您的终端上。 如果syslogd和klogd同时运行,则无论它们是否显示在控制台上,信息也会添加到文件/var/log/messages中。 除了将信息添加到日志文件外,printk )还使用高优先级(如KERN_ALERT )将信息输出到控制台。

俊逸的麦粉制作真正实用的模块时,应该使用适合可能遇到的情况的优先顺序。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。