That is merged.

Maxim.

On 01/21/2015 02:37 AM, Mike Holmes wrote:
To allow init_global to replace the default logging function without
the need to use weak symbols a global location is needed to hold the
current logging function pointer.

Signed-off-by: Mike Holmes <[email protected]>
---
  platform/linux-generic/include/api/odp_debug.h      | 2 ++
  platform/linux-generic/include/odp_debug_internal.h | 7 ++++---
  platform/linux-generic/include/odp_internal.h       | 5 +++++
  platform/linux-generic/odp_init.c                   | 2 ++
  4 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/platform/linux-generic/include/api/odp_debug.h 
b/platform/linux-generic/include/api/odp_debug.h
index a4ce1d9..4c32500 100644
--- a/platform/linux-generic/include/api/odp_debug.h
+++ b/platform/linux-generic/include/api/odp_debug.h
@@ -76,6 +76,8 @@ typedef enum odp_log_level {
  extern int odp_override_log(odp_log_level_e level, const char *fmt, ...);
+/** Replaceable logging function */
+typedef int (*odp_log_func_t)(odp_log_level_e level, const char *fmt, ...);
/**
   * @}
diff --git a/platform/linux-generic/include/odp_debug_internal.h 
b/platform/linux-generic/include/odp_debug_internal.h
index f6180d1..0b64fca 100644
--- a/platform/linux-generic/include/odp_debug_internal.h
+++ b/platform/linux-generic/include/odp_debug_internal.h
@@ -20,6 +20,7 @@
  #include <stdlib.h>
  #include <stdarg.h>
  #include <odp_debug.h>
+#include <odp_internal.h>
  #ifdef __cplusplus
  extern "C" {
  #endif
@@ -60,7 +61,7 @@ extern "C" {
   * This macro is used to indicate when a given function is not implemented
   */
  #define ODP_UNIMPLEMENTED() \
-               odp_override_log(ODP_LOG_UNIMPLEMENTED, \
+               odp_global_data.log_fn(ODP_LOG_UNIMPLEMENTED, \
                        "%s:%d:The function %s() is not implemented\n", \
                        __FILE__, __LINE__, __func__)
  /**
@@ -92,7 +93,7 @@ extern "C" {
   * ODP LOG macro.
   */
  #define ODP_LOG(level, fmt, ...) \
-       odp_override_log(level, "%s:%d:%s():" fmt, __FILE__, \
+       odp_global_data.log_fn(level, "%s:%d:%s():" fmt, __FILE__, \
        __LINE__, __func__, ##__VA_ARGS__)
/**
@@ -100,7 +101,7 @@ extern "C" {
   * specifically for dumping internal data.
   */
  #define ODP_PRINT(fmt, ...) \
-       odp_override_log(ODP_LOG_PRINT, " " fmt, ##__VA_ARGS__)
+       odp_global_data.log_fn(ODP_LOG_PRINT, " " fmt, ##__VA_ARGS__)
#ifdef __cplusplus
  }
diff --git a/platform/linux-generic/include/odp_internal.h 
b/platform/linux-generic/include/odp_internal.h
index 549d406..7401a30 100644
--- a/platform/linux-generic/include/odp_internal.h
+++ b/platform/linux-generic/include/odp_internal.h
@@ -18,6 +18,11 @@
  extern "C" {
  #endif
+#include <odp_debug.h>
+
+struct odp_global_data {
+       odp_log_func_t log_fn;
+} odp_global_data;
int odp_system_info_init(void); diff --git a/platform/linux-generic/odp_init.c b/platform/linux-generic/odp_init.c
index 77bfd09..4f152ac 100644
--- a/platform/linux-generic/odp_init.c
+++ b/platform/linux-generic/odp_init.c
@@ -13,6 +13,8 @@
  int odp_init_global(odp_init_t *params  ODP_UNUSED,
                        odp_platform_init_t *platform_params ODP_UNUSED)
  {
+       odp_global_data.log_fn = odp_override_log;
+
        odp_system_info_init();
if (odp_shm_init_global()) {


_______________________________________________
lng-odp mailing list
[email protected]
http://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to