前缀 printk / pr_* 调用

ted*_*ted 2 kernel kernel-module linux-device-driver linux-kernel

我想在我的驱动程序(调试)输出前加上它的名字,即[myDriver] Actual message. 因为printk(level NAMEMACRO "Actual message\n")每次我想覆盖printk/pr_*实际包含该[myDriver]部分时都写起来很烦人。但是我想不出办法来做到这一点。在最好的情况下,解决方案不会强迫我更改代码中的printk/pr_*调用(更改调用后,这变得微不足道)。

这可能吗?(由于我包含了其他标题,而​​这些printk标题又包含标题,因此将始终定义此规则,因此不会按照不同的 so 答案中的建议链接到原始内容)

现在的司机有什么理由不注意这个文本吗?(还有另一种方法可以按驱动程序过滤 dmesg 吗?)

我有点意识到,dev_dbg但我还没有发现任何针对一般警告的开发人员,所以我将使用printk/ pr_err

ask*_*skb 5

使用pr_{debug,warn,err}()[drivername] 前缀的标准。

前任:

 pr_debug("kvm: matched tsc offset for %llu\n", data);
Run Code Online (Sandbox Code Playgroud)

或者你可以使用 dev_warn()

前任:

 dev_warn(&adap->dev, "Bus may be unreliable\n");
Run Code Online (Sandbox Code Playgroud)

还有另一种方法可以按驱动程序过滤 dmesg 吗?

除非您想dmesg -c在加载驱动程序之前运行以清除日志,否则不会。它总是重新开始在您的调试/打印消息中添加驱动程序名称的前缀。当您收到客户的日志时,您不想浪费时间手动阅读每一行。