diff mbox

[v2,3/5] api: abort: use globaly stored abort function

Message ID 1422963328-31760-4-git-send-email-mike.holmes@linaro.org
State Accepted
Commit de37ffa4c410569db9e2921328eb8b8194134c46
Headers show

Commit Message

Mike Holmes Feb. 3, 2015, 11:35 a.m. UTC
Use the abort function stored in the global data structure.

Signed-off-by: Mike Holmes <mike.holmes@linaro.org>
---
 include/odp/api/init.h                              | 3 +++
 platform/linux-generic/include/odp_debug_internal.h | 4 ++--
 platform/linux-generic/include/odp_internal.h       | 1 +
 platform/linux-generic/odp_init.c                   | 1 +
 4 files changed, 7 insertions(+), 2 deletions(-)
diff mbox

Patch

diff --git a/include/odp/api/init.h b/include/odp/api/init.h
index 4b9296b..c5b4e9b 100644
--- a/include/odp/api/init.h
+++ b/include/odp/api/init.h
@@ -91,6 +91,9 @@  void odp_override_abort(void) ODP_NORETURN;
 /** Replaceable logging function */
 typedef int (*odp_log_func_t)(odp_log_level_e level, const char *fmt, ...);
 
+/** Replaceable abort function */
+typedef void (*odp_abort_func_t)(void) ODP_NORETURN;
+
 /** ODP initialization data.
  * Data that is required to initialize the ODP API with the
  * application specific data such as specifying a logging callback, the log
diff --git a/platform/linux-generic/include/odp_debug_internal.h b/platform/linux-generic/include/odp_debug_internal.h
index 20b6fcc..2b643eb 100644
--- a/platform/linux-generic/include/odp_debug_internal.h
+++ b/platform/linux-generic/include/odp_debug_internal.h
@@ -54,7 +54,7 @@  extern "C" {
 #define ODP_ASSERT(cond, msg) \
 	do { if ((ODP_DEBUG == 1) && (!(cond))) { \
 		ODP_ERR("%s\n", msg); \
-		odp_override_abort(); } \
+		odp_global_data.abort_fn(); } \
 	} while (0)
 
 /**
@@ -86,7 +86,7 @@  extern "C" {
 #define ODP_ABORT(fmt, ...) \
 	do { \
 		ODP_LOG(ODP_LOG_ABORT, fmt, ##__VA_ARGS__); \
-		odp_override_abort(); \
+		odp_global_data.abort_fn(); \
 	} while (0)
 
 /**
diff --git a/platform/linux-generic/include/odp_internal.h b/platform/linux-generic/include/odp_internal.h
index 608aafd..9a6e29d 100644
--- a/platform/linux-generic/include/odp_internal.h
+++ b/platform/linux-generic/include/odp_internal.h
@@ -22,6 +22,7 @@  extern "C" {
 
 struct odp_global_data {
 	odp_log_func_t log_fn;
+	odp_abort_func_t abort_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 6db05b3..e91e910 100644
--- a/platform/linux-generic/odp_init.c
+++ b/platform/linux-generic/odp_init.c
@@ -14,6 +14,7 @@  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_global_data.abort_fn = odp_override_abort;
 
 	if (params != NULL) {
 		if (params->log_fn != NULL)