Rather than using INSTANCE_ID (constant 0xdeadbeef), the ODP main instantiation process ID is used as instance ID in the linux-generic implementation. This is a simple way to guarantee instance uniqueness on linux systems.
Signed-off-by: Christophe Milard <christophe.mil...@linaro.org> --- platform/linux-generic/include/odp_internal.h | 1 - platform/linux-generic/odp_init.c | 7 +++---- platform/linux-generic/odp_traffic_mngr.c | 3 ++- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/platform/linux-generic/include/odp_internal.h b/platform/linux-generic/include/odp_internal.h index 8bad450..3429781 100644 --- a/platform/linux-generic/include/odp_internal.h +++ b/platform/linux-generic/include/odp_internal.h @@ -25,7 +25,6 @@ extern "C" { extern __thread int __odp_errno; -#define INSTANCE_ID 0xdeadbeef #define MAX_CPU_NUMBER 128 typedef struct { diff --git a/platform/linux-generic/odp_init.c b/platform/linux-generic/odp_init.c index f534759..77f4f8a 100644 --- a/platform/linux-generic/odp_init.c +++ b/platform/linux-generic/odp_init.c @@ -116,8 +116,7 @@ int odp_init_global(odp_instance_t *instance, goto init_failed; } - /* Dummy support for single instance */ - *instance = INSTANCE_ID; + *instance = (odp_instance_t)odp_global_data.main_pid; return 0; @@ -128,7 +127,7 @@ init_failed: int odp_term_global(odp_instance_t instance) { - if (instance != INSTANCE_ID) { + if (instance != (odp_instance_t)odp_global_data.main_pid) { ODP_ERR("Bad instance.\n"); return -1; } @@ -250,7 +249,7 @@ int odp_init_local(odp_instance_t instance, odp_thread_type_t thr_type) { enum init_stage stage = NO_INIT; - if (instance != INSTANCE_ID) { + if (instance != (odp_instance_t)odp_global_data.main_pid) { ODP_ERR("Bad instance.\n"); goto init_fail; } diff --git a/platform/linux-generic/odp_traffic_mngr.c b/platform/linux-generic/odp_traffic_mngr.c index 4fe07ef..85228cd 100644 --- a/platform/linux-generic/odp_traffic_mngr.c +++ b/platform/linux-generic/odp_traffic_mngr.c @@ -2317,7 +2317,8 @@ static void *tm_system_thread(void *arg) uint32_t destroying, work_queue_cnt, timer_cnt; int rc; - rc = odp_init_local(INSTANCE_ID, ODP_THREAD_WORKER); + rc = odp_init_local((odp_instance_t)odp_global_data.main_pid, + ODP_THREAD_WORKER); ODP_ASSERT(rc == 0); tm_group = arg; -- 2.7.4