On 04/04/17 21:47, Brian Brooks wrote: > Signed-off-by: Ola Liljedahl <[email protected]> > Reviewed-by: Brian Brooks <[email protected]> > Reviewed-by: Honnappa Nagarahalli <[email protected]> > Reviewed-by: Kevin Wang <[email protected]> > --- > test/common_plat/performance/odp_scheduling.c | 12 ++++++++++-- > 1 file changed, 10 insertions(+), 2 deletions(-) > > diff --git a/test/common_plat/performance/odp_scheduling.c > b/test/common_plat/performance/odp_scheduling.c > index c74a0713..38e76257 100644 > --- a/test/common_plat/performance/odp_scheduling.c > +++ b/test/common_plat/performance/odp_scheduling.c > @@ -273,7 +273,7 @@ static int test_plain_queue(int thr, test_globals_t > *globals) > test_message_t *t_msg; > odp_queue_t queue; > uint64_t c1, c2, cycles; > - int i; > + int i, j; > > /* Alloc test message */ > buf = odp_buffer_alloc(globals->pool); > @@ -307,7 +307,15 @@ static int test_plain_queue(int thr, test_globals_t > *globals) > return -1; > } > > - ev = odp_queue_deq(queue); > + /* When enqueue and dequeue are decoupled (e.g. not using a > + * common lock), an enqueued event may not be immediately > + * visible to dequeue. So we just try again for a while. */ > + for (j = 0; j < 100; j++) {
where 100 number comes from? Maxim. > + ev = odp_queue_deq(queue); > + if (ev != ODP_EVENT_INVALID) > + break; > + odp_cpu_pause(); > + } > > buf = odp_buffer_from_event(ev); > >
