Message ID | 1505538646-19191-9-git-send-email-yamada.masahiro@socionext.com |
---|---|
State | Superseded |
Headers | show |
Series | Sync and consolidate Linux-derived printk, BUILD_BUG, BUG, WARN, etc. | expand |
On 15 September 2017 at 23:10, Masahiro Yamada <yamada.masahiro@socionext.com> wrote: > Many drivers use dev_err, dev_info, etc. for logging. Currently, > we are relying on <linux/compat.h>, but I guess the best home is > <dm/device.h>, taking into account that Linux defines them in > <linux/device.h>. > > For now, I am keeping the ones in <linux/compat.h> because lots of > Linux-originated code uses dev_*() just for the purpose of syncing, > but the first argument is not struct udevice, so we need to ignore > it. Once this issue is ironed out, it would be possible to prefix > log messages with a device name that emitted it, like Linux. > > Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> > --- > > Changes in v2: > - newly added > > include/dm/device.h | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++ > include/linux/compat.h | 17 ++++++++++++ > 2 files changed, 89 insertions(+) Reviewed-by: Simon Glass <sjg@chromium.org> But shouldn't it be emerg rather than emerge? - Simon
Hi Simon, 2017-09-25 11:15 GMT+09:00 Simon Glass <sjg@chromium.org>: > On 15 September 2017 at 23:10, Masahiro Yamada > <yamada.masahiro@socionext.com> wrote: >> Many drivers use dev_err, dev_info, etc. for logging. Currently, >> we are relying on <linux/compat.h>, but I guess the best home is >> <dm/device.h>, taking into account that Linux defines them in >> <linux/device.h>. >> >> For now, I am keeping the ones in <linux/compat.h> because lots of >> Linux-originated code uses dev_*() just for the purpose of syncing, >> but the first argument is not struct udevice, so we need to ignore >> it. Once this issue is ironed out, it would be possible to prefix >> log messages with a device name that emitted it, like Linux. >> >> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> >> --- >> >> Changes in v2: >> - newly added >> >> include/dm/device.h | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++ >> include/linux/compat.h | 17 ++++++++++++ >> 2 files changed, 89 insertions(+) > > Reviewed-by: Simon Glass <sjg@chromium.org> > > But shouldn't it be emerg rather than emerge? > Good catch! I just moved the macros from include/linux/compat.h but it should be dev_emerg() Currently, there is no user of this macro, so it is better to rename it.
diff --git a/include/dm/device.h b/include/dm/device.h index 4866f7c0028b..cce60b7ed3fd 100644 --- a/include/dm/device.h +++ b/include/dm/device.h @@ -18,6 +18,7 @@ #include <linux/compat.h> #include <linux/kernel.h> #include <linux/list.h> +#include <linux/printk.h> struct driver_info; @@ -879,4 +880,75 @@ static inline void devm_kfree(struct udevice *dev, void *ptr) #endif /* ! CONFIG_DEVRES */ +/* + * REVISIT: + * remove the following after resolving conflicts with <linux/compat.h> + */ +#ifdef dev_dbg +#undef dev_dbg +#endif +#ifdef dev_vdbg +#undef dev_vdbg +#endif +#ifdef dev_info +#undef dev_info +#endif +#ifdef dev_err +#undef dev_err +#endif +#ifdef dev_warn +#undef dev_warn +#endif + +/* + * REVISIT: + * print device name like Linux + */ +#define dev_printk(dev, fmt, ...) \ +({ \ + printk(fmt, ##__VA_ARGS__); \ +}) + +#define __dev_printk(level, dev, fmt, ...) \ +({ \ + if (level < CONFIG_LOGLEVEL) \ + dev_printk(dev, fmt, ##__VA_ARGS__); \ +}) + +#define dev_emerge(dev, fmt, ...) \ + __dev_printk(0, dev, fmt, ##__VA_ARGS__) +#define dev_alert(dev, fmt, ...) \ + __dev_printk(1, dev, fmt, ##__VA_ARGS__) +#define dev_crit(dev, fmt, ...) \ + __dev_printk(2, dev, fmt, ##__VA_ARGS__) +#define dev_err(dev, fmt, ...) \ + __dev_printk(3, dev, fmt, ##__VA_ARGS__) +#define dev_warn(dev, fmt, ...) \ + __dev_printk(4, dev, fmt, ##__VA_ARGS__) +#define dev_notice(dev, fmt, ...) \ + __dev_printk(5, dev, fmt, ##__VA_ARGS__) +#define dev_info(dev, fmt, ...) \ + __dev_printk(6, dev, fmt, ##__VA_ARGS__) + +#ifdef DEBUG +#define dev_dbg(dev, fmt, ...) \ + __dev_printk(7, dev, fmt, ##__VA_ARGS__) +#else +#define dev_dbg(dev, fmt, ...) \ +({ \ + if (0) \ + __dev_printk(7, dev, fmt, ##__VA_ARGS__); \ +}) +#endif + +#ifdef VERBOSE_DEBUG +#define dev_vdbg dev_dbg +#else +#define dev_vdbg(dev, fmt, ...) \ +({ \ + if (0) \ + __dev_printk(7, dev, fmt, ##__VA_ARGS__); \ +}) +#endif + #endif diff --git a/include/linux/compat.h b/include/linux/compat.h index 1b3f089687e4..8711fe2b48c4 100644 --- a/include/linux/compat.h +++ b/include/linux/compat.h @@ -15,6 +15,23 @@ struct p_current{ extern struct p_current *current; +/* avoid conflict with <dm/device.h> */ +#ifdef dev_dbg +#undef dev_dbg +#endif +#ifdef dev_vdbg +#undef dev_vdbg +#endif +#ifdef dev_info +#undef dev_info +#endif +#ifdef dev_err +#undef dev_err +#endif +#ifdef dev_warn +#undef dev_warn +#endif + #define dev_dbg(dev, fmt, args...) \ debug(fmt, ##args) #define dev_vdbg(dev, fmt, args...) \
Many drivers use dev_err, dev_info, etc. for logging. Currently, we are relying on <linux/compat.h>, but I guess the best home is <dm/device.h>, taking into account that Linux defines them in <linux/device.h>. For now, I am keeping the ones in <linux/compat.h> because lots of Linux-originated code uses dev_*() just for the purpose of syncing, but the first argument is not struct udevice, so we need to ignore it. Once this issue is ironed out, it would be possible to prefix log messages with a device name that emitted it, like Linux. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> --- Changes in v2: - newly added include/dm/device.h | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++ include/linux/compat.h | 17 ++++++++++++ 2 files changed, 89 insertions(+)