On 15 January 2015 at 06:36, Ola Liljedahl <[email protected]> wrote:

> On 15 January 2015 at 12:22, Savolainen, Petri (NSN - FI/Espoo)
> <[email protected]> wrote:
> >
> >
> >> -----Original Message-----
> >> From: [email protected] [mailto:lng-odp-
> >> [email protected]] On Behalf Of ext Ola Liljedahl
> >> Sent: Thursday, January 15, 2015 12:07 PM
> >> To: [email protected]
> >> Subject: [lng-odp] [PATCH] example: odp_timer_test.c: bug 1068 -
> >> odp_timer_test aborts
> >>
> >> Since the scheduler does not guarantee fairness in scheduling, threads
> >> must
> >> time out and check if the example is still running. If this is the case,
> >> just restart the scheduler loop (not the whole example loop which may
> have
> >> other side effects, e.g. resetting timers with some random tick value),
> >> otherwise break out of the example loop which will terminate the
> example.
> >>
> >> Signed-off-by: Ola Liljedahl <[email protected]>
>

Missing Reported-by


> >> ---
> >> (This document/code contribution attached is provided under the terms of
> >> agreement LES-LTM-21309)
> >>
> >>  example/timer/odp_timer_test.c | 21 +++++++++++++++------
> >>  1 file changed, 15 insertions(+), 6 deletions(-)
> >>
> >> diff --git a/example/timer/odp_timer_test.c
> >> b/example/timer/odp_timer_test.c
> >> index 5de499b..dfd6c70 100644
> >> --- a/example/timer/odp_timer_test.c
> >> +++ b/example/timer/odp_timer_test.c
> >> @@ -126,13 +126,22 @@ static void test_abs_timeouts(int thr, test_args_t
> >> *args)
> >>               }
> >>
> >>               /* Get the next expired timeout */
> >> -             /* Use 1.5 second timeout for scheduler */
> >> -             uint64_t sched_tmo =
> odp_schedule_wait_time(1500000000ULL);
> >> -             buf = odp_schedule(&queue, sched_tmo);
> >> -             /* Check if odp_schedule() timed out, possibly there are
> no
> >> -              * remaining timeouts to receive */
> >> +             /* We invoke the scheduler in a loop with a timeout
> because
> >> +              * we are not guaranteed to receive any more timeouts. The
> >> +              * scheduler isn't guaranteeing fairness when scheduling
> >> +              * buffers to threads */
> >> +             do {
> >> +                     /* Use 1.5 second timeout for scheduler */
> >> +                     uint64_t sched_tmo =
> >> +                             odp_schedule_wait_time(1500000000ULL);
> >
> > No need to repeat wait time conversion in the loop. It's better to keep
> it out side of the loop since this is an example and should demonstrate the
> correct/elegant way of using the APIs.
> Calling odp_schedule() with a long timeout in a loop is IMO not a very
> elegant way of using the scheduler API. It is a brutal work-around.
>
> -- Ola
>
> >
> > -Petri
> >
> >> +                     buf = odp_schedule(&queue, sched_tmo);
> >> +                     /* Check if odp_schedule() timed out, possibly
> there
> >> +                      * are no remaining timeouts to receive */
> >> +             } while (buf == ODP_BUFFER_INVALID &&
> >> +                      (int)odp_atomic_load_u32(&remain) > 0);
> >> +
> >>               if (buf == ODP_BUFFER_INVALID)
> >> -                     continue; /* Re-check the remain counter */
> >> +                     break; /* No more timeouts */
> >>               if (odp_buffer_type(buf) != ODP_BUFFER_TYPE_TIMEOUT) {
> >>                       /* Not a default timeout buffer */
> >>                       EXAMPLE_ABORT("Unexpected buffer type (%u)
> received\n",
> >> --
> >> 1.9.1
> >>
> >>
> >> _______________________________________________
> >> lng-odp mailing list
> >> [email protected]
> >> http://lists.linaro.org/mailman/listinfo/lng-odp
>
> _______________________________________________
> lng-odp mailing list
> [email protected]
> http://lists.linaro.org/mailman/listinfo/lng-odp
>



-- 
*Mike Holmes*
Linaro  Sr Technical Manager
LNG - ODP
_______________________________________________
lng-odp mailing list
[email protected]
http://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to