If the scheduler sync type is atomic or ordered,
need to release the context.

Signed-off-by: Kevin Wang <[email protected]>
Reviewed-by: Ola Liljedahl <[email protected]>
---
 .../common_plat/validation/api/scheduler/scheduler.c | 20 +++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)

diff --git a/test/common_plat/validation/api/scheduler/scheduler.c 
b/test/common_plat/validation/api/scheduler/scheduler.c
index 952561c..2631001 100644
--- a/test/common_plat/validation/api/scheduler/scheduler.c
+++ b/test/common_plat/validation/api/scheduler/scheduler.c
@@ -129,6 +129,14 @@ static int exit_schedule_loop(void)
        return ret;
 }
 
+static void release_context(odp_schedule_sync_t sync)
+{
+       if (sync == ODP_SCHED_SYNC_ATOMIC)
+               odp_schedule_release_atomic();
+       else if (sync == ODP_SCHED_SYNC_ORDERED)
+               odp_schedule_release_ordered();
+}
+
 void scheduler_test_wait_time(void)
 {
        int i;
@@ -251,8 +259,7 @@ void scheduler_test_queue_destroy(void)
                CU_ASSERT_FATAL(u32[0] == MAGIC);
 
                odp_buffer_free(buf);
-               odp_schedule_release_ordered();
-
+               release_context(qp.sched.sync);
                CU_ASSERT_FATAL(odp_queue_destroy(queue) == 0);
        }
 
@@ -478,6 +485,7 @@ void scheduler_test_groups(void)
                odp_schedule_group_leave(mygrp1, &mymask);
                odp_schedule_group_leave(mygrp2, &mymask);
 
+               release_context(qp.sched.sync);
                /* Done with queues for this round */
                CU_ASSERT_FATAL(odp_queue_destroy(queue_grp1) == 0);
                CU_ASSERT_FATAL(odp_queue_destroy(queue_grp2) == 0);
@@ -820,12 +828,7 @@ static int schedule_common_(void *arg)
                        }
                }
 
-               if (sync == ODP_SCHED_SYNC_ATOMIC)
-                       odp_schedule_release_atomic();
-
-               if (sync == ODP_SCHED_SYNC_ORDERED)
-                       odp_schedule_release_ordered();
-
+               release_context(sync);
                odp_ticketlock_lock(&globals->lock);
 
                globals->buf_count -= num;
@@ -959,7 +962,6 @@ static void fill_queues(thread_args_t *args)
                                }
 
                                ret = odp_queue_enq(queue, ev);
-                               CU_ASSERT_FATAL(ret == 0);
 
                                if (ret)
                                        odp_buffer_free(buf);
-- 
2.7.4

Reply via email to