diff options
Diffstat (limited to 'platform/linux-dpdk/odp_thread.c')
-rw-r--r-- | platform/linux-dpdk/odp_thread.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/platform/linux-dpdk/odp_thread.c b/platform/linux-dpdk/odp_thread.c index f03be1d75..39ff1b28b 100644 --- a/platform/linux-dpdk/odp_thread.c +++ b/platform/linux-dpdk/odp_thread.c @@ -96,7 +96,14 @@ int _odp_thread_init_global(void) int _odp_thread_term_global(void) { - int ret; + int ret, num; + + odp_spinlock_lock(&thread_globals->lock); + num = thread_globals->num; + odp_spinlock_unlock(&thread_globals->lock); + + if (num) + ODP_ERR("%u threads have not called odp_term_local().\n", num); ret = odp_shm_free(thread_globals->shm); if (ret < 0) @@ -240,6 +247,8 @@ int _odp_thread_term_local(void) if (type == ODP_THREAD_CONTROL && group_control) _odp_sched_fn->thr_rem(ODP_SCHED_GROUP_CONTROL, id); + _odp_this_thread = NULL; + odp_spinlock_lock(&thread_globals->lock); num = free_id(id); odp_spinlock_unlock(&thread_globals->lock); |