From: Matias Elo <matias....@nokia.com>

Signed-off-by: Matias Elo <matias....@nokia.com>
---
/** Email created from pull request 667 (matiaselo:dev/abi_clean_invalid)
 ** https://github.com/Linaro/odp/pull/667
 ** Patch: https://github.com/Linaro/odp/pull/667.patch
 ** Base sha: 7c87b66edc84e8c713fefc68d46464660adaf71e
 ** Merge commit sha: 0c5d0fdd232cad0a55d68e819ff9f707fea014f5
 **/
 include/odp/api/abi-default/timer.h                    | 2 +-
 platform/linux-generic/include-abi/odp/api/abi/timer.h | 2 +-
 platform/linux-generic/odp_timer.c                     | 7 ++++---
 3 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/include/odp/api/abi-default/timer.h 
b/include/odp/api/abi-default/timer.h
index 2cf69d920..a7da8ff7a 100644
--- a/include/odp/api/abi-default/timer.h
+++ b/include/odp/api/abi-default/timer.h
@@ -37,7 +37,7 @@ typedef struct timer_pool_s *odp_timer_pool_t;
 
 typedef _odp_abi_timer_t *odp_timer_t;
 
-#define ODP_TIMER_INVALID ((odp_timer_t)0xffffffff)
+#define ODP_TIMER_INVALID ((odp_timer_t)0)
 
 typedef _odp_abi_timeout_t *odp_timeout_t;
 
diff --git a/platform/linux-generic/include-abi/odp/api/abi/timer.h 
b/platform/linux-generic/include-abi/odp/api/abi/timer.h
index 9bc67e058..48138f72f 100644
--- a/platform/linux-generic/include-abi/odp/api/abi/timer.h
+++ b/platform/linux-generic/include-abi/odp/api/abi/timer.h
@@ -34,7 +34,7 @@ typedef struct timer_pool_s *odp_timer_pool_t;
 
 typedef ODP_HANDLE_T(odp_timer_t);
 
-#define ODP_TIMER_INVALID _odp_cast_scalar(odp_timer_t, 0xffffffff)
+#define ODP_TIMER_INVALID _odp_cast_scalar(odp_timer_t, 0)
 
 typedef ODP_HANDLE_T(odp_timeout_t);
 
diff --git a/platform/linux-generic/odp_timer.c 
b/platform/linux-generic/odp_timer.c
index a030036a8..716571ca0 100644
--- a/platform/linux-generic/odp_timer.c
+++ b/platform/linux-generic/odp_timer.c
@@ -231,7 +231,7 @@ static inline timer_pool_t *handle_to_tp(odp_timer_t hdl)
 static inline uint32_t handle_to_idx(odp_timer_t hdl,
                                     timer_pool_t *tp)
 {
-       uint32_t idx = _odp_typeval(hdl) & ((1U << INDEX_BITS) - 1U);
+       uint32_t idx = (_odp_typeval(hdl) & ((1U << INDEX_BITS) - 1U)) - 1;
        __builtin_prefetch(&tp->tick_buf[idx], 0, 0);
        if (odp_likely(idx < odp_atomic_load_u32(&tp->high_wm)))
                return idx;
@@ -241,8 +241,9 @@ static inline uint32_t handle_to_idx(odp_timer_t hdl,
 static inline odp_timer_t tp_idx_to_handle(timer_pool_t *tp,
                                           uint32_t idx)
 {
-       ODP_ASSERT(idx < (1U << INDEX_BITS));
-       return _odp_cast_scalar(odp_timer_t, (tp->tp_idx << INDEX_BITS) | idx);
+       ODP_ASSERT((idx + 1) < (1U << INDEX_BITS));
+       return _odp_cast_scalar(odp_timer_t, (tp->tp_idx << INDEX_BITS) |
+                               (idx + 1));
 }
 
 /* Forward declarations */

Reply via email to