首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >前缀printk / pr_*调用

前缀printk / pr_*调用
EN

Stack Overflow用户
提问于 2014-12-11 15:52:54
回答 2查看 1.5K关注 0票数 2

我想在我的驱动程序(调试)输出前加上它的名称,即[myDriver] Actual message。因为每当我考虑覆盖printk(level NAMEMACRO "Actual message\n") /pr_*以实际包含[myDriver]部分时,编写[myDriver]是件很烦人的事。但是,我想不出有什么办法可以做到这一点。在最好的情况下,解决方案不会强迫我更改代码中的printk/pr_*调用(对于更改的调用,这就变得微不足道)。

这个是可能的吗?(由于我包含了其他标头,而后者又包含了printk头,因此它将始终被定义,这就排除了不像在不同的so答案中建议的那样链接到原始的标题)。

是否有任何理由,为什么当前的驱动程序没有在这对文本?(是否有另一种通过驱动程序过滤dmesg的方法?)

我对dev_dbg有一定的了解,但是我没有发现任何特定于警告的开发工具,所以我将使用printk/pr_err

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-28 20:00:06

相关的答案(在the duplicate中找到)是#define pr_fmt (来自上面链接的重复问题的代码):

代码语言:javascript
复制
/* At the top of the file, before any includes */
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt

#include <linux/printk.h>

另外,如果我包含变量,有时pr_fmt不会自动为我应用。手动使用(如在printk(pr_fmt("message %p"), (void*)ptr)中)解决了这些情况,并遵守了定义pr_fmt的约定。

因为我没有找到重复的问题,所以我不会删除这个问题给像我这样的其他谷歌人。

票数 2
EN

Stack Overflow用户

发布于 2014-12-11 16:38:03

它的标准使用pr_{debug,warn,err}()与毛毛蒜皮前缀。

例:

代码语言:javascript
复制
 pr_debug("kvm: matched tsc offset for %llu\n", data);

或者,您可以使用dev_warn()

例:

代码语言:javascript
复制
 dev_warn(&adap->dev, "Bus may be unreliable\n");

还有其他方法可以通过驱动程序过滤dmesg吗?

除非您希望在加载驱动程序之前运行dmesg -c来清除日志。它总是在调试/打印消息中重新前缀驱动程序名。正如您从客户那里接收到日志一样,您不希望浪费时间手动读取每一行。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27426985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档