首页 > 编程知识 正文

串口调试助手ascii字符发送,printk用法

时间:2023-05-05 00:54:49 阅读:165149 作者:3364

用printk发送想追踪的信息。 从名字中可以看出,这很像gnu

c的打印文件。 但是,用于内核的东西应该总是有特色的,printk增加了几个日志级别(loglevel ),并且存在在具体日志级别定义的宏。

(打印格式: printk (kern _ alert ' theprocessis' % s' (PID

%I(n )、current-comm和current-pid ) )。

这些宏定义的注释已经很详细了。

#define KERN_EMERG '' /* system is

不可用* /

# define kern _ alert ' '/* actionmustbetaken

immediately */

#define KERN_CRIT '' /* critical

conditions */

#define KERN_ERR '' /* error

conditions */

#define KERN_WARNING '' /* warning

conditions */

# define kern _ notice ' '/* normalbutsignificant

condition */

#define KERN_INFO '' /*

信息* /

# define kern _ debug ' '/* debug-level

消息* /

使用printk,内核可以根据日志级别将消息打印到当前控制台。 该控制台通常是字符模式终端、串行打印机和并行打印机。 这些消息正常输出的前提是——日志输出级别小于console_loglevel (内核中的数字越低,优先级越高)。 但是系统和klogd

在syslogd日志守护进程中,printk信息会同时添加到/var/log/messages中。 当然,也可以在dmesg中显示系统的输出信息。 (这些信息位于/proc/kmsg中,但没有将消息映射到用户空间,因此普通用户无法直接访问。 dmesg用于访问它

如果内核正在运行,则可以使用proc文件系统修改内核执行的某些参数。 proc实际上是一个内存文件系统,显示了Linux VFS (虚拟)

文件

system )文件系统的威力。 该文件系统由软件创建,内核使用该文件系统向外部导出信息,导致proc使用混乱,从而出现了sys文件系统。 好像出轨了! 由于proc文件系统是内核抛出的信息,因此可以通过更改/proc/sys/kernel/printk的值来更改日志的输出级别。 该文件包含四个值:当前日志级别、未明确指定日志级别时的默认消息级别、最小允许日志级别和启动时的默认日志级别。

为了更好地管理日志,可以通过修改/etc/syslog.conf来满足需要。 man

syslog.conf可以获取更多关于syslog.conf的信息。 ajdmy在编写内核模块时,应该注意一个问题,你不能为难那些消息。 因此,需要定义几个宏来切换printk消息。 结果,printk用于调试,或者用于显示设备和模块的一些状态。 内核还提供了在中定义的几个接口。 他们是一些内联函数。 输入

printk_ratelimit(void )。 在打印可能重复的信息之前,必须调用此函数。 如果返回非零值,则可以继续打印消息。 否则,跳过。

printk_ratelimit通过跟踪发送到控制台的消息数量来避免消息重复输出。 通过修改/proc/sys/kernel

使用/printk_ratelimit设置重新打开消息前等待的秒数。

本文来自ChinaUnix博客。 查看原文请点击http://blog.chinaunix.net/u1/51980/showart _ 1670820.html

标签:

本网站的一部分文章来自互联网。 如果有侵害的话,请联系我。 west999com@outlook.com

特别注意:本网站转载文章的发言不代表本网站的观点。 本网站提供的照片、插图、设计作品,请根据需要与原作者联系。 版权归原作者所有

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