Messages in this thread Patch in this message | | | Date | Tue, 15 Apr 2003 00:37:07 -0700 | From | Greg KH <> | Subject | [PATCH] add CONFIG_DEBUG_DEV_PRINTK |
| |
Ok, I don't want to remember how many times I've gotten burned by the dev_printk() function while developing drivers, as it doesn't check for valid pointers before dereferencing them. So here's a patch I've started using that might help out any kernel driver developers in the same situation. For device busses that support hotplug, this patch is a lifesaver (the dev->driver pointer has a fun habit of going away pretty early during disconnect...)
I'm not pushing for submission to the main kernel tree, unless others really feel it's useful.
greg k-h
# added CONFIG_DEBUG_DEV_PRINTK option to keep my sanity during development.
diff -Nru a/arch/i386/Kconfig b/arch/i386/Kconfig --- a/arch/i386/Kconfig Mon Apr 14 11:46:36 2003 +++ b/arch/i386/Kconfig Mon Apr 14 11:46:36 2003 @@ -1504,6 +1504,13 @@ This options enables addition error checking for high memory systems. Disable for production systems. +config DEBUG_DEV_PRINTK + bool "Debug dev_printk" + depends on DEBUG_KERNEL + help + If you say Y here, all dev_printk() parameters will be checked before + dev_printk() is called. This is useful when debugging new drivers. + config KALLSYMS bool "Load all symbols for debugging/kksymoops" help diff -Nru a/include/linux/device.h b/include/linux/device.h --- a/include/linux/device.h Mon Apr 14 11:46:36 2003 +++ b/include/linux/device.h Mon Apr 14 11:46:36 2003 @@ -379,8 +379,20 @@ extern void firmware_unregister(struct subsystem *); /* debugging and troubleshooting/diagnostic helpers. */ +#ifdef CONFIG_DEBUG_DEV_PRINTK +#define dev_printk(level, dev, format, arg...) \ + do { \ + if (!(dev) || !(dev)->driver) \ + WARN_ON(1); \ + else \ + printk(level "%s %s: " format , \ + (dev)->driver->name , \ + (dev)->bus_id , ## arg); \ + } while (0) +#else #define dev_printk(level, dev, format, arg...) \ printk(level "%s %s: " format , (dev)->driver->name , (dev)->bus_id , ## arg) +#endif #ifdef DEBUG #define dev_dbg(dev, format, arg...) \ - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |