On Tue, Apr 4, 2017 at 3:37 PM, Brian Brooks <brian.bro...@arm.com> wrote:
> On 04/04 21:59:15, Maxim Uvarov wrote:
>> On 04/04/17 21:47, Brian Brooks wrote:
>> > Signed-off-by: Ola Liljedahl <ola.liljed...@arm.com>
>> > Reviewed-by: Brian Brooks <brian.bro...@arm.com>
>> > Reviewed-by: Honnappa Nagarahalli <honnappa.nagaraha...@arm.com>
>> > Reviewed-by: Kevin Wang <kevin.w...@arm.com>
>> > ---
>> >  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?
>
> It is the retry count. Perhaps it could be a bit lower, or a bit higher, but
> it works well.

Actually, it's incorrect. What happens if all 100 retries fail? You'll
call odp_buffer_from_event() for ODP_EVENT_INVALID, which is
undefined.

>
>> Maxim.
>>
>> > +                   ev = odp_queue_deq(queue);
>> > +                   if (ev != ODP_EVENT_INVALID)
>> > +                           break;
>> > +                   odp_cpu_pause();
>> > +           }
>> >
>> >             buf = odp_buffer_from_event(ev);
>> >
>> >
>>

Reply via email to