From d219f3a36e49914c7184514d8e6ace4f3b5aabf2 Mon Sep 17 00:00:00 2001
From: Dimitry Kloper <dikloper@cisco.com>
Date: Sat, 9 Jan 2016 14:28:12 +0200
Subject: [PATCH] Introduce arch-specific debug macro hooks

Make it possible for arch code to provide hook macros for NuttX dbg
that will lead to arch-specific syslog() and lowsyslog() variants.
---
 Kconfig         |  6 ++++++
 include/debug.h | 27 +++++++++++++++++++++------
 2 files changed, 27 insertions(+), 6 deletions(-)

diff --git a/Kconfig b/Kconfig
index 03a2a872a5..bc2e4316da 100644
--- a/Kconfig
+++ b/Kconfig
@@ -376,6 +376,12 @@ config ARCH_STDARG_H
 		ARCH_STDARG_H=y and providing. If ARCH_STDARG_H, is not defined, then
 		the stdarg.h header file will stay out-of-the-way in include/nuttx/.
 
+config ARCH_DEBUG_H
+	bool "debug.h"
+	default n
+	---help---
+                The debug.h contains architecture dependent debugging primitives
+
 endmenu # Customize Header Files
 
 menu "Debug Options"
diff --git a/include/debug.h b/include/debug.h
index b1bb2fc9d1..0f89753072 100644
--- a/include/debug.h
+++ b/include/debug.h
@@ -43,6 +43,10 @@
 #include <nuttx/config.h>
 #include <nuttx/compiler.h>
 
+#ifdef CONFIG_ARCH_DEBUG_H
+# include <arch/debug.h>
+#endif
+
 #include <syslog.h>
 
 /****************************************************************************
@@ -94,6 +98,17 @@
 # define EXTRA_ARG
 #endif
 
+/*
+ * The actual logger function may be overridden in arch/debug.h if needed.
+ */
+
+#ifndef __arch_syslog
+# define __arch_syslog syslog
+#endif
+#ifndef __arch_lowsyslog
+# define __arch_lowsyslog lowsyslog
+#endif
+
 /* Debug macros will differ depending upon if the toolchain supports
  * macros with a variable number of arguments or not.
  */
@@ -104,30 +119,30 @@
 
 #ifdef CONFIG_DEBUG
 # define dbg(format, ...) \
-  syslog(LOG_ERR, EXTRA_FMT format EXTRA_ARG, ##__VA_ARGS__)
+  __arch_syslog(LOG_ERR, EXTRA_FMT format EXTRA_ARG, ##__VA_ARGS__)
 
 # ifdef CONFIG_ARCH_LOWPUTC
 #  define lldbg(format, ...) \
-   lowsyslog(LOG_ERR, EXTRA_FMT format EXTRA_ARG, ##__VA_ARGS__)
+   __arch_lowsyslog(LOG_ERR, EXTRA_FMT format EXTRA_ARG, ##__VA_ARGS__)
 # else
 #  define lldbg(x...)
 # endif
 
 # ifdef CONFIG_DEBUG_VERBOSE
 #  define vdbg(format, ...) \
-   syslog(LOG_DEBUG, EXTRA_FMT format EXTRA_ARG, ##__VA_ARGS__)
+   __arch_syslog(LOG_DEBUG, EXTRA_FMT format EXTRA_ARG, ##__VA_ARGS__)
 
 #  ifdef CONFIG_ARCH_LOWPUTC
 #    define llvdbg(format, ...) \
-     lowsyslog(LOG_DEBUG, EXTRA_FMT format EXTRA_ARG, ##__VA_ARGS__)
+     __arch_lowsyslog(LOG_DEBUG, EXTRA_FMT format EXTRA_ARG, ##__VA_ARGS__)
 #  else
 #    define llvdbg(x...)
 #  endif
 
-# else
+# else /* CONFIG_DEBUG_VERBOSE */
 #  define vdbg(x...)
 #  define llvdbg(x...)
-# endif
+# endif /* CONFIG_DEBUG_VERBOSE */
 
 #else /* CONFIG_DEBUG */
 
-- 
GitLab