From: Martin Schwidefsky <email@example.com>
From: Michael Holzheu <firstname.lastname@example.org>
Add CONFIG_MSG_IDS support to the dev_xxx printk family. The message
tag for a device printk consists of the driver name and the 24 bit
hash over the message text. The hash is included in the printed line
if the KMSG_COMPONENT macro is defined and CONFIG_MSG_IDS=y. For
source files that do not define KMSG_COMPONENT or CONFIG_MSG_IDS=n
the dev_xxx printks use the old-style format.
To make it possible for a script to extract the correct message tag
for the dev_xxx printks the KMSG_COMPONENT and the driver name need to
be identical for all dev_xxx printks in a source file. If a source file
is supposed to be converted to use message tags and there are dev_xxx
printks with driver names different to KMSG_COMPONENT these dev_xxx
printks need to be replaced with kmsg_xxx printks. In praxis this
should not be a problem since there are very few dev_xxx printks outside
of driver code.
In addition to the KMSG_COMPONENT changes in include/linux/device.h the
dev_xxx macros with variable arguments are converted from the gcc specific
'## arg' to the C99 variant '##__VA_ARGS__'.
Signed-off-by: Michael Holzheu <email@example.com>
Signed-off-by: Martin Schwidefsky <firstname.lastname@example.org>
include/linux/device.h | 57 ++++++++++++++++++++++++++++++-------------------
kernel/printk.c | 22 ++++++++++++++++++
2 files changed, 57 insertions(+), 22 deletions(-)
@@ -520,39 +520,52 @@ extern void sysdev_shutdown(void);
/* debugging and troubleshooting/diagnostic helpers. */
extern const char *dev_driver_string(const struct device *dev);
-#define dev_printk(level, dev, format, arg...) \
+#define dev_printk(level, dev, format, ...) \
printk(level "%s %s: " format , dev_driver_string(dev) , \
Nice, thanks for reworking this. Feel free to add:
Acked-by: Greg Kroah-Hartman <email@example.com>
Note that you will get some merge errors with -next in device.h due to
the dynamic debug printk work that is in my tree and in -next as well.
But it should be simple to resolve.
Is the dynamic debug printk work going upstream with the next merge
window? If yes then I'll wait until it hit Linus tree and update my
"Reality continues to ruin my life." - Calvin.