On 10 November 2015 at 13:24, Ivan Khoronzhuk <[email protected]> wrote:
> > > On 10.11.15 13:37, Ivan Khoronzhuk wrote: > >> >> >> On 10.11.15 13:11, Maxim Uvarov wrote: >> >>> On 11/10/2015 14:01, Ivan Khoronzhuk wrote: >>> >>>> If tick is lost then application should be warned about this. >>>> It means that actual timer resolution is worse than expected. >>>> The default timer resolution is set 10ms, that is equal to jiffy >>>> on most systems. The default resolution is set bearing in mind >>>> that on a CPU runs maximum two threads that ideally fits in 10ms. >>>> But user can change it to be smaller, in case if CPU0 is isolated >>>> and it handles only the timer ticks. This patch helps user to set >>>> correct timer resolution. >>>> >>>> Signed-off-by: Ivan Khoronzhuk <[email protected]> >>>> --- >>>> >>>> Since v1: >>>> - changed ODP_ABORT on ODP_ERR >>>> >>>> v1: >>>> https://lists.linaro.org/pipermail/lng-odp/2015-November/017026.html >>>> >>>> platform/linux-generic/odp_timer.c | 7 +++++++ >>>> 1 file changed, 7 insertions(+) >>>> >>>> diff --git a/platform/linux-generic/odp_timer.c >>>> b/platform/linux-generic/odp_timer.c >>>> index e8f0267..aa80256 100644 >>>> --- a/platform/linux-generic/odp_timer.c >>>> +++ b/platform/linux-generic/odp_timer.c >>>> @@ -632,7 +632,14 @@ static unsigned >>>> odp_timer_pool_expire(odp_timer_pool_t tpid, uint64_t tick) >>>> static void timer_notify(sigval_t sigval) >>>> { >>>> + uint64_t overrun; >>>> odp_timer_pool *tp = (odp_timer_pool *)sigval.sival_ptr; >>>> + >>>> + overrun = timer_getoverrun(tp->timerid); >>>> >>> int timer_getoverrun(timer_t timerid); >>> >>> Maxim. >>> >> >> Yep. correct in v4 >> > > I will include this patch in series with: > "[lng-odp] [PATCH] example: timer: don't set timeout less than resolution" > as both of them allow to avoid issue described at: > https://bugs.linaro.org/show_bug.cgi?id=1449 > > > >> + if (overrun) >>>> + ODP_ERR("Error: need to increase resolution, lost tickets: %" >>>> >>> tickets -> ticks I would write: "Error: timer ticks lost, need to increase timer resolution". What's the overrun parameter for? Better to print the name of the timer. > + PRIu64"\n", overrun); >>>> + >>>> #ifdef __ARM_ARCH >>>> odp_timer *array = &tp->timers[0]; >>>> uint32_t i; >>>> >>> >>> _______________________________________________ >>> lng-odp mailing list >>> [email protected] >>> https://lists.linaro.org/mailman/listinfo/lng-odp >>> >> >> > -- > Regards, > Ivan Khoronzhuk > _______________________________________________ > lng-odp mailing list > [email protected] > https://lists.linaro.org/mailman/listinfo/lng-odp >
_______________________________________________ lng-odp mailing list [email protected] https://lists.linaro.org/mailman/listinfo/lng-odp
