+ 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 <[email protected]>
---
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
[email protected]
https://lists.linaro.org/mailman/listinfo/lng-odp