转自: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的调试信息开关,还得需要在这之上封装哟。