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