aboutsummaryrefslogtreecommitdiff
path: root/platform/linux-dpdk/odp_thread.c
diff options
context:
space:
mode:
Diffstat (limited to 'platform/linux-dpdk/odp_thread.c')
-rw-r--r--platform/linux-dpdk/odp_thread.c11
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);