首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优先顺序- printk() vs dev_dbg() vs netdev_dbg()

优先顺序- printk() vs dev_dbg() vs netdev_dbg()
EN

Stack Overflow用户
提问于 2014-02-27 18:42:51
回答 1查看 11.2K关注 0票数 18

最近,我在linux源代码树中运行了脚本/checkpatch.pl脚本,并收到了以下警告:

代码语言:javascript
复制
WARNING: Prefer netdev_dbg(netdev, ... then dev_dbg(dev, ... then pr_debug(...  to printk(KERN_DEBUG ...
printk(KERN_DEBUG "Hello World! \n");

我理解pr_debug和dev_dbg提供的动态调试接口对于printk有明显的优势,因此它们比printk更好。

即使在dev_dbg和pr_debug中,如果我们有一个结构化设备来标准化设备信息输出以及调试消息,那么我们也更喜欢dev_dbg。它提供了逃避“编辑/重建/重新启动周期”的功能,并允许通过dynamic_debug/control接口维护整洁的日志。

我的问题是:为什么netdev_dbg比dev_dbg更受欢迎?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-28 22:56:01

每个内核子系统通常都有自己的printk格式。因此,当您使用网络子系统时,您必须使用netdev_dbg;当您使用V4L时,您必须使用v4l_dbg。它标准化了子系统中的输出格式。

netdev_dbg,这不是绝对喜欢的印刷风格。如果您使用的是网络设备,则更适合使用它。如果您查看源代码这里,就会发现它是必需的struct netdevice对象,并且只有在网络子系统中工作时才有这种对象。

消息可能会被混淆,因为它应该建议您使用您正在处理的子系统的打印方法。您已经收到警告,因为您使用的是prink(),这是打印某些东西的原始方式。

根据您正在编码的内容,您应该使用不同的打印样式:

printk():从不

pr_debug():总是好的

dev_dbg():当您有struct device对象时更喜欢

netdev_dbg():当您有struct netdevice对象时更喜欢

[something]_dbg():当你有某个对象时更喜欢

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

https://stackoverflow.com/questions/22077540

复制
相关文章

相似问题

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