[lng-odp] [PATCH] linux-generic: timer: limit notification about resolution incorrectness
https://bugs.linaro.org/show_bug.cgi?id=1992 Signed-off-by: Ivan Khoronzhuk --- platform/linux-generic/odp_timer.c | 14 ++ 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/platform/linux-generic/odp_timer.c b/platform/linux-generic/odp_timer.c index 4bab481..01339ad 100644 --- a/platform/linux-generic/odp_timer.c +++ b/platform/linux-generic/odp_timer.c @@ -168,6 +168,7 @@ typedef struct odp_timer_pool_s { char name[ODP_TIMER_POOL_NAME_LEN]; odp_shm_t shm; timer_t timerid; + int notify_overrun; } odp_timer_pool; #define MAX_TIMER_POOLS 255 /* Leave one for ODP_TIMER_INVALID */ @@ -239,6 +240,7 @@ static odp_timer_pool *odp_timer_pool_new( tp->num_alloc = 0; odp_atomic_init_u32(&tp->high_wm, 0); tp->first_free = 0; + tp->notify_overrun = 1; tp->tick_buf = (void *)((char *)odp_shm_addr(shm) + sz0); tp->timers = (void *)((char *)odp_shm_addr(shm) + sz0 + sz1); /* Initialize all odp_timer entries */ @@ -635,10 +637,14 @@ static void timer_notify(sigval_t sigval) int overrun; odp_timer_pool *tp = (odp_timer_pool *)sigval.sival_ptr; - overrun = timer_getoverrun(tp->timerid); - if (overrun) - ODP_ERR("\n\t%d ticks overrun on timer pool \"%s\", timer resolution too high\n", - overrun, tp->name); + if (tp->notify_overrun) { + overrun = timer_getoverrun(tp->timerid); + if (overrun) { + ODP_ERR("\n\t%d ticks overrun on timer pool \"%s\", timer resolution too high\n", + overrun, tp->name); + tp->notify_overrun = 0; + } + } #ifdef __ARM_ARCH odp_timer *array = &tp->timers[0]; -- 1.9.1 ___ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp
Re: [lng-odp] [PATCH] linux-generic: timer: limit notification about resolution incorrectness
+ Stuart Haslam On 22.01.16 17:07, Ivan Khoronzhuk wrote: https://bugs.linaro.org/show_bug.cgi?id=1992 Signed-off-by: Ivan Khoronzhuk --- platform/linux-generic/odp_timer.c | 14 ++ 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/platform/linux-generic/odp_timer.c b/platform/linux-generic/odp_timer.c index 4bab481..01339ad 100644 --- a/platform/linux-generic/odp_timer.c +++ b/platform/linux-generic/odp_timer.c @@ -168,6 +168,7 @@ typedef struct odp_timer_pool_s { char name[ODP_TIMER_POOL_NAME_LEN]; odp_shm_t shm; timer_t timerid; + int notify_overrun; } odp_timer_pool; #define MAX_TIMER_POOLS 255 /* Leave one for ODP_TIMER_INVALID */ @@ -239,6 +240,7 @@ static odp_timer_pool *odp_timer_pool_new( tp->num_alloc = 0; odp_atomic_init_u32(&tp->high_wm, 0); tp->first_free = 0; + tp->notify_overrun = 1; tp->tick_buf = (void *)((char *)odp_shm_addr(shm) + sz0); tp->timers = (void *)((char *)odp_shm_addr(shm) + sz0 + sz1); /* Initialize all odp_timer entries */ @@ -635,10 +637,14 @@ static void timer_notify(sigval_t sigval) int overrun; odp_timer_pool *tp = (odp_timer_pool *)sigval.sival_ptr; - overrun = timer_getoverrun(tp->timerid); - if (overrun) - ODP_ERR("\n\t%d ticks overrun on timer pool \"%s\", timer resolution too high\n", - overrun, tp->name); + if (tp->notify_overrun) { + overrun = timer_getoverrun(tp->timerid); + if (overrun) { + ODP_ERR("\n\t%d ticks overrun on timer pool \"%s\", timer resolution too high\n", + overrun, tp->name); + tp->notify_overrun = 0; + } + } #ifdef __ARM_ARCH odp_timer *array = &tp->timers[0]; -- Regards, Ivan Khoronzhuk ___ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp
Re: [lng-odp] [PATCH] linux-generic: timer: limit notification about resolution incorrectness
On Fri, Jan 22, 2016 at 05:07:31PM +0200, Ivan Khoronzhuk wrote: > https://bugs.linaro.org/show_bug.cgi?id=1992 > > Signed-off-by: Ivan Khoronzhuk Reviewed-and-Tested-by: Stuart Haslam > --- > platform/linux-generic/odp_timer.c | 14 ++ > 1 file changed, 10 insertions(+), 4 deletions(-) > > diff --git a/platform/linux-generic/odp_timer.c > b/platform/linux-generic/odp_timer.c > index 4bab481..01339ad 100644 > --- a/platform/linux-generic/odp_timer.c > +++ b/platform/linux-generic/odp_timer.c > @@ -168,6 +168,7 @@ typedef struct odp_timer_pool_s { > char name[ODP_TIMER_POOL_NAME_LEN]; > odp_shm_t shm; > timer_t timerid; > + int notify_overrun; > } odp_timer_pool; > > #define MAX_TIMER_POOLS 255 /* Leave one for ODP_TIMER_INVALID */ > @@ -239,6 +240,7 @@ static odp_timer_pool *odp_timer_pool_new( > tp->num_alloc = 0; > odp_atomic_init_u32(&tp->high_wm, 0); > tp->first_free = 0; > + tp->notify_overrun = 1; > tp->tick_buf = (void *)((char *)odp_shm_addr(shm) + sz0); > tp->timers = (void *)((char *)odp_shm_addr(shm) + sz0 + sz1); > /* Initialize all odp_timer entries */ > @@ -635,10 +637,14 @@ static void timer_notify(sigval_t sigval) > int overrun; > odp_timer_pool *tp = (odp_timer_pool *)sigval.sival_ptr; > > - overrun = timer_getoverrun(tp->timerid); > - if (overrun) > - ODP_ERR("\n\t%d ticks overrun on timer pool \"%s\", timer > resolution too high\n", > - overrun, tp->name); > + if (tp->notify_overrun) { > + overrun = timer_getoverrun(tp->timerid); > + if (overrun) { > + ODP_ERR("\n\t%d ticks overrun on timer pool \"%s\", > timer resolution too high\n", > + overrun, tp->name); > + tp->notify_overrun = 0; > + } > + } > > #ifdef __ARM_ARCH > odp_timer *array = &tp->timers[0]; > -- > 1.9.1 > ___ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp
Re: [lng-odp] [PATCH] linux-generic: timer: limit notification about resolution incorrectness
Merged, with fix: WARNING: 'Reviewed-and-tested-by:' is the preferred signature form #10: Reviewed-and-Tested-by: Stuart Haslam Maxim. On 01/22/2016 20:20, Stuart Haslam wrote: On Fri, Jan 22, 2016 at 05:07:31PM +0200, Ivan Khoronzhuk wrote: https://bugs.linaro.org/show_bug.cgi?id=1992 Signed-off-by: Ivan Khoronzhuk Reviewed-and-Tested-by: Stuart Haslam --- platform/linux-generic/odp_timer.c | 14 ++ 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/platform/linux-generic/odp_timer.c b/platform/linux-generic/odp_timer.c index 4bab481..01339ad 100644 --- a/platform/linux-generic/odp_timer.c +++ b/platform/linux-generic/odp_timer.c @@ -168,6 +168,7 @@ typedef struct odp_timer_pool_s { char name[ODP_TIMER_POOL_NAME_LEN]; odp_shm_t shm; timer_t timerid; + int notify_overrun; } odp_timer_pool; #define MAX_TIMER_POOLS 255 /* Leave one for ODP_TIMER_INVALID */ @@ -239,6 +240,7 @@ static odp_timer_pool *odp_timer_pool_new( tp->num_alloc = 0; odp_atomic_init_u32(&tp->high_wm, 0); tp->first_free = 0; + tp->notify_overrun = 1; tp->tick_buf = (void *)((char *)odp_shm_addr(shm) + sz0); tp->timers = (void *)((char *)odp_shm_addr(shm) + sz0 + sz1); /* Initialize all odp_timer entries */ @@ -635,10 +637,14 @@ static void timer_notify(sigval_t sigval) int overrun; odp_timer_pool *tp = (odp_timer_pool *)sigval.sival_ptr; - overrun = timer_getoverrun(tp->timerid); - if (overrun) - ODP_ERR("\n\t%d ticks overrun on timer pool \"%s\", timer resolution too high\n", - overrun, tp->name); + if (tp->notify_overrun) { + overrun = timer_getoverrun(tp->timerid); + if (overrun) { + ODP_ERR("\n\t%d ticks overrun on timer pool \"%s\", timer resolution too high\n", + overrun, tp->name); + tp->notify_overrun = 0; + } + } #ifdef __ARM_ARCH odp_timer *array = &tp->timers[0]; -- 1.9.1 ___ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp ___ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp