转自:http://hi.baidu.com/littertiger/blog/item/5bae2c38970934f1b311c725.html
看2.6.20的代码,发现里面用了dev_err,仔细一看才知道不知什么时候,在include/linux/device.h里面对于printk有一组完整的封装。
#define dev_printk(level, dev, format, arg...) \
printk(level "%s %s: " format , dev_driver_string(dev) , (dev)->bus_id , ## arg)
#ifdef DEBUG
#define dev_dbg(dev, format, arg...) \
dev_printk(KERN_DEBUG , dev , format , ## arg)
#else
#define dev_dbg(dev, format, arg...) do { (void)(dev); } while (0)
#endif
#define dev_err(dev, format, arg...) \
dev_printk(KERN_ERR , dev , format , ## arg)
#define dev_info(dev, format, arg...) \
dev_printk(KERN_INFO , dev , format , ## arg)
#define dev_warn(dev, format, arg...) \
dev_printk(KERN_WARNING , dev , format , ## arg)
#define dev_notice(dev, format, arg...) \
dev_printk(KERN_NOTICE , dev , format , ## arg)
主要是在printk的时候,不用些module/device名字了。
不过单个module的调试信息开关,还得需要在这之上封装哟。
本文详细解析了Linux内核中关于设备调试的一系列封装,包括如何使用dev_printk函数进行日志输出,以及针对不同级别的调试信息的封装函数如dev_err、dev_info等。此外,文章还讨论了如何在特定模块上进行调试信息开关的封装。
379

被折叠的 条评论
为什么被折叠?



