https://bugs.linaro.org/show_bug.cgi?id=1992

Signed-off-by: Ivan Khoronzhuk <ivan.khoronz...@linaro.org>
---
 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

Reply via email to