最近,我在linux源代码树中运行了脚本/checkpatch.pl脚本,并收到了以下警告:
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更受欢迎?
发布于 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():当你有某个对象时更喜欢
https://stackoverflow.com/questions/22077540
复制相似问题