Message ID | 1447153092-15998-1-git-send-email-ivan.khoronzhuk@linaro.org |
---|---|
State | Superseded |
Headers | show |
ignore it. On 10.11.15 12:58, 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 <ivan.khoronzhuk@linaro.org> > --- > > 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..3728ac3 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); > + if (overrun) > + ODP_ABORT("Error: need to increase resolution, lost tickets: %" > + PRIu64"\n", overrun); > + > #ifdef __ARM_ARCH > odp_timer *array = &tp->timers[0]; > uint32_t i; >
diff --git a/platform/linux-generic/odp_timer.c b/platform/linux-generic/odp_timer.c index e8f0267..3728ac3 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); + if (overrun) + ODP_ABORT("Error: need to increase resolution, lost tickets: %" + PRIu64"\n", overrun); + #ifdef __ARM_ARCH odp_timer *array = &tp->timers[0]; uint32_t i;
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 <ivan.khoronzhuk@linaro.org> --- 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(+)