> -----Original Message----- > From: lng-odp [mailto:[email protected]] On Behalf Of Kevin > Wang > Sent: Friday, April 07, 2017 11:07 AM > To: [email protected] > Cc: Kevin Wang <[email protected]> > Subject: [lng-odp] [PATCH] validation: scheduler: Release context before > the end of the scheduler test > > If the scheduler sync type is atomic or ordered, > need to release the context.
Release context is actually a hint. It does not guarantee that context is released. Application needs to call schedule() and receive _EVENT_INVALID to be sure that it does not hold a context anymore. > > 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); Why this hint was added? Maybe a proper pause()/schedule() sequence is actually missing here ? > /* 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); Why this line was removed? Is it bug in the test? Did you really meant to remove the line? It does not belong under the subject line of this patch. -Petri > > if (ret) > > odp_buffer_free(buf); > -- > 2.7.4
