aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristophe Milard <christophe.milard@linaro.org>2016-09-19 17:56:57 +0200
committerMaxim Uvarov <maxim.uvarov@linaro.org>2016-10-04 18:06:47 +0300
commit09abf90268a0a5a2daf7c7e0ae37a2d7c35e87c5 (patch)
treef99ad6cf93a904135e58f63b9151798b6ef64721
parent88df2613cb91022233f9ec973f6ef338eb060f17 (diff)
linux-gen: using ODP instantiation pid as odp instance
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.milard@linaro.org> Reviewed-and-tested-by: Bill Fischofer <bill.fischofer@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
-rw-r--r--platform/linux-generic/include/odp_internal.h1
-rw-r--r--platform/linux-generic/odp_init.c7
-rw-r--r--platform/linux-generic/odp_traffic_mngr.c3
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 8bad4506..3429781a 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 f534759e..77f4f8af 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 4fe07ef5..85228cd0 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;