diff mbox series

[v2,8/8] dm: define dev_*() log functions in DM header

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

Commit Message

Masahiro Yamada Sept. 16, 2017, 5:10 a.m. UTC
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(+)

Comments

Simon Glass Sept. 25, 2017, 2:15 a.m. UTC | #1
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
Masahiro Yamada Sept. 26, 2017, 3 a.m. UTC | #2
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 mbox series

Patch

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...)		\