On 20 April 2015 at 19:15, Mike Holmes <mike.hol...@linaro.org> wrote:
> I think the current patch solves the bug, there are no longer failures to > terminate threads which is a bug in the implementation. > > It sounds like there is a new lower priority bug to clean out the example > which throws up EXAMPLE_ERR. > > If that makes sense I am happy to add reviewed by. > Makes sense to me. > > On 20 April 2015 at 08:32, Ola Liljedahl <ola.liljed...@linaro.org> wrote: > >> Fixes https://bugs.linaro.org/show_bug.cgi?id=1450 >> >> Signed-off-by: Ola Liljedahl <ola.liljed...@linaro.org> >> > > Tested- > > >> --- >> (This document/code contribution attached is provided under the terms of >> agreement LES-LTM-21309) >> >> example/timer/odp_timer_test.c | 38 >> ++++++++++++++++++++++++++++++++++++++ >> 1 file changed, 38 insertions(+) >> >> diff --git a/example/timer/odp_timer_test.c >> b/example/timer/odp_timer_test.c >> index 6b60ec4..fd31466 100644 >> --- a/example/timer/odp_timer_test.c >> +++ b/example/timer/odp_timer_test.c >> @@ -79,6 +79,41 @@ struct test_timer { >> static struct test_timer tt[256]; >> >> /** @private test timeout */ >> +static void free_event(odp_event_t ev) >> +{ >> + switch (odp_event_type(ev)) { >> + case ODP_EVENT_BUFFER: >> + odp_buffer_free(odp_buffer_from_event(ev)); >> + break; >> + case ODP_EVENT_PACKET: >> + odp_packet_free(odp_packet_from_event(ev)); >> + break; >> + case ODP_EVENT_TIMEOUT: >> + odp_timeout_free(odp_timeout_from_event(ev)); >> + break; >> + case ODP_EVENT_CRYPTO_COMPL: >> + odp_crypto_compl_free(odp_crypto_compl_from_event(ev)); >> + break; >> + default: >> + fprintf(stderr, "Unrecognized event type %d\n", >> + odp_event_type(ev)); >> + abort(); >> + } >> +} >> + >> +/** @private test timeout */ >> +static void remove_prescheduled_events(void) >> +{ >> + odp_event_t ev; >> + odp_queue_t queue; >> + odp_schedule_pause(); >> + while ((ev = odp_schedule(&queue, ODP_SCHED_NO_WAIT)) != >> + ODP_EVENT_INVALID) { >> + free_event(ev); >> + } >> +} >> + >> +/** @private test timeout */ >> static void test_abs_timeouts(int thr, test_args_t *args) >> { >> uint64_t period; >> @@ -173,6 +208,9 @@ static void test_abs_timeouts(int thr, test_args_t >> *args) >> /* Since we have cancelled the timer, there is no timeout event to >> * return from odp_timer_free() */ >> (void)odp_timer_free(ttp->tim); >> + >> + /* Remove any prescheduled events */ >> + remove_prescheduled_events(); >> } >> >> >> -- >> 1.9.1 >> >> _______________________________________________ >> lng-odp mailing list >> lng-odp@lists.linaro.org >> https://lists.linaro.org/mailman/listinfo/lng-odp >> > > > > -- > Mike Holmes > Technical Manager - Linaro Networking Group > Linaro.org <http://www.linaro.org/> *│ *Open source software for ARM SoCs > > >
_______________________________________________ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp