Changed timer API to use odp_event_t instead of odp_buffer_t.

Signed-off-by: Petri Savolainen <petri.savolai...@linaro.org>
---
 example/timer/odp_timer_test.c                 | 28 ++++++------
 platform/linux-generic/include/api/odp_timer.h | 63 ++++++++++----------------
 platform/linux-generic/odp_timer.c             | 28 ++++--------
 3 files changed, 50 insertions(+), 69 deletions(-)

diff --git a/example/timer/odp_timer_test.c b/example/timer/odp_timer_test.c
index c4f0c5b..944ef9e 100644
--- a/example/timer/odp_timer_test.c
+++ b/example/timer/odp_timer_test.c
@@ -62,8 +62,8 @@ static const char *timerset2str(odp_timer_set_t val)
                return "too early";
        case ODP_TIMER_TOOLATE:
                return "too late";
-       case ODP_TIMER_NOBUF:
-               return "no buffer";
+       case ODP_TIMER_NOEVENT:
+               return "no event";
        default:
                return "?";
        }
@@ -72,7 +72,7 @@ static const char *timerset2str(odp_timer_set_t val)
 /** @private Helper struct for timers */
 struct test_timer {
        odp_timer_t tim;
-       odp_buffer_t buf;
+       odp_event_t ev;
 };
 
 /** @private Array of all timer helper structs */
@@ -86,6 +86,7 @@ static void test_abs_timeouts(int thr, test_args_t *args)
        odp_queue_t queue;
        uint64_t tick;
        struct test_timer *ttp;
+       odp_buffer_t buf;
 
        EXAMPLE_DBG("  [%i] test_timeouts\n", thr);
 
@@ -106,11 +107,12 @@ static void test_abs_timeouts(int thr, test_args_t *args)
                EXAMPLE_ERR("Failed to allocate timer\n");
                return;
        }
-       ttp->buf = odp_buffer_alloc(pool);
-       if (ttp->buf == ODP_BUFFER_INVALID) {
+       buf = odp_buffer_alloc(pool);
+       if (buf == ODP_BUFFER_INVALID) {
                EXAMPLE_ERR("Failed to allocate buffer\n");
                return;
        }
+       ttp->ev = odp_buffer_to_event(buf);
        tick = odp_timer_current_tick(tp);
 
        while ((int)odp_atomic_load_u32(&remain) > 0) {
@@ -118,7 +120,7 @@ static void test_abs_timeouts(int thr, test_args_t *args)
                odp_timer_set_t rc;
 
                tick += period;
-               rc = odp_timer_set_abs(ttp->tim, tick, &ttp->buf);
+               rc = odp_timer_set_abs(ttp->tim, tick, &ttp->ev);
                if (odp_unlikely(rc != ODP_TIMER_SUCCESS)) {
                        /* Too early or too late timeout requested */
                        EXAMPLE_ABORT("odp_timer_set_abs() failed: %s\n",
@@ -134,14 +136,14 @@ static void test_abs_timeouts(int thr, test_args_t *args)
                if (ev == ODP_EVENT_INVALID)
                        continue; /* Re-check the remain counter */
                if (odp_event_type(ev) != ODP_EVENT_TIMEOUT) {
-                       /* Not a default timeout buffer */
+                       /* Not a default timeout event */
                        EXAMPLE_ABORT("Unexpected event type (%u) received\n",
                                      odp_event_type(ev));
                }
                odp_timeout_t tmo = odp_timeout_from_event(ev);
                tick = odp_timeout_tick(tmo);
                ttp = odp_timeout_user_ptr(tmo);
-               ttp->buf = odp_buffer_from_event(ev);
+               ttp->ev = ev;
                if (!odp_timeout_fresh(tmo)) {
                        /* Not the expected expiration tick, timer has
                         * been reset or cancelled or freed */
@@ -154,12 +156,12 @@ static void test_abs_timeouts(int thr, test_args_t *args)
        }
 
        /* Cancel and free last timer used */
-       (void)odp_timer_cancel(ttp->tim, &ttp->buf);
-       if (ttp->buf != ODP_BUFFER_INVALID)
-               odp_buffer_free(ttp->buf);
+       (void)odp_timer_cancel(ttp->tim, &ttp->ev);
+       if (ttp->ev != ODP_EVENT_INVALID)
+               odp_buffer_free(odp_buffer_from_event(ttp->ev));
        else
-               EXAMPLE_ERR("Lost timeout buffer at timer cancel\n");
-       /* Since we have cancelled the timer, there is no timeout buffer to
+               EXAMPLE_ERR("Lost timeout event at timer cancel\n");
+       /* Since we have cancelled the timer, there is no timeout event to
         * return from odp_timer_free() */
        (void)odp_timer_free(ttp->tim);
 }
diff --git a/platform/linux-generic/include/api/odp_timer.h 
b/platform/linux-generic/include/api/odp_timer.h
index cb17b7b..075263a 100644
--- a/platform/linux-generic/include/api/odp_timer.h
+++ b/platform/linux-generic/include/api/odp_timer.h
@@ -20,7 +20,6 @@ extern "C" {
 
 #include <stdlib.h>
 #include <odp_std_types.h>
-#include <odp_buffer.h>
 #include <odp_event.h>
 #include <odp_queue.h>
 
@@ -86,10 +85,10 @@ typedef enum {
  * timer pool. */
        ODP_TIMER_TOOLATE = -2,
 /**
- * Timer set operation failed because no timeout buffer specified and no
- * timeout buffer present in the timer (timer inactive/expired).
+ * Timer set operation failed because no timeout event specified and no
+ * timeout event present in the timer (timer inactive/expired).
  */
-       ODP_TIMER_NOBUF = -3
+       ODP_TIMER_NOEVENT = -3
 } odp_timer_set_t;
 
 /** Maximum timer pool name length in chars (including null char) */
@@ -214,29 +213,29 @@ odp_timer_t odp_timer_alloc(odp_timer_pool_t tpid,
  * Free a timer
  *
  * Free (destroy) a timer, reclaiming associated resources.
- * The timeout buffer for an active timer will be returned.
- * The timeout buffer for an expired timer will not be returned. It is the
+ * The timeout event for an active timer will be returned.
+ * The timeout event for an expired timer will not be returned. It is the
  * responsibility of the application to handle this timeout when it is 
received.
  *
  * @param tim      Timer handle
- * @return Buffer handle of timeout buffer or ODP_BUFFER_INVALID
+ * @return Event handle of timeout event or ODP_EVENT_INVALID
  */
-odp_buffer_t odp_timer_free(odp_timer_t tim);
+odp_event_t odp_timer_free(odp_timer_t tim);
 
 /**
- * Set a timer (absolute time) with a user-provided timeout buffer
+ * Set a timer (absolute time) with a user-provided timeout event
  *
  * Set (arm) the timer to expire at specific time. The timeout
- * buffer will be enqueued when the timer expires.
+ * event will be enqueued when the timer expires.
  *
  * Note: any invalid parameters will be treated as programming errors and will
  * cause the application to abort.
  *
  * @param tim      Timer
  * @param abs_tck  Expiration time in absolute timer ticks
- * @param[in,out] tmo_buf  Reference to a buffer variable that points to
- * timeout buffer or NULL to reuse the existing timeout buffer. Any existing
- * timeout buffer that is replaced by a successful set operation will be
+ * @param[in,out] tmo_ev  Reference to an event variable that points to
+ * timeout event or NULL to reuse the existing timeout event. Any existing
+ * timeout event that is replaced by a successful set operation will be
  * returned here.
  *
  * @retval ODP_TIMER_SUCCESS Operation succeeded
@@ -244,15 +243,15 @@ odp_buffer_t odp_timer_free(odp_timer_t tim);
  * early
  * @retval ODP_TIMER_TOOLATE Operation failed because expiration tick too
  * late
- * @retval ODP_TIMER_NOBUF Operation failed because timeout buffer not
+ * @retval ODP_TIMER_NOEVENT Operation failed because timeout event not
  * specified in odp_timer_set call and not present in timer
  */
 int odp_timer_set_abs(odp_timer_t tim,
                      uint64_t abs_tck,
-                     odp_buffer_t *tmo_buf);
+                     odp_event_t *tmo_ev);
 
 /**
- * Set a timer with a relative expiration time and user-provided buffer.
+ * Set a timer with a relative expiration time and user-provided event.
  *
  * Set (arm) the timer to expire at a relative future time.
  *
@@ -262,9 +261,9 @@ int odp_timer_set_abs(odp_timer_t tim,
  * @param tim      Timer
  * @param rel_tck  Expiration time in timer ticks relative to current time of
  *                the timer pool the timer belongs to
- * @param[in,out] tmo_buf  Reference to a buffer variable that points to
- * timeout buffer or NULL to reuse the existing timeout buffer. Any existing
- * timeout buffer that is replaced by a successful set operation will be
+ * @param[in,out] tmo_ev  Reference to an event variable that points to
+ * timeout event or NULL to reuse the existing timeout event. Any existing
+ * timeout event that is replaced by a successful set operation will be
  * returned here.
  *
  * @retval ODP_TIMER_SUCCESS Operation succeeded
@@ -272,18 +271,18 @@ int odp_timer_set_abs(odp_timer_t tim,
  * early
  * @retval ODP_TIMER_TOOLATE Operation failed because expiration tick too
  * late
- * @retval ODP_TIMER_NOBUF Operation failed because timeout buffer not
+ * @retval ODP_TIMER_NOEVENT Operation failed because timeout event not
  * specified in call and not present in timer
  */
 int odp_timer_set_rel(odp_timer_t tim,
                      uint64_t rel_tck,
-                     odp_buffer_t *tmo_buf);
+                     odp_event_t *tmo_ev);
 
 /**
  * Cancel a timer
  *
  * Cancel a timer, preventing future expiration and delivery. Return any
- * present timeout buffer.
+ * present timeout event.
  *
  * A timer that has already expired may be impossible to cancel and the timeout
  * will instead be delivered to the destination queue.
@@ -292,23 +291,11 @@ int odp_timer_set_rel(odp_timer_t tim,
  * cause the application to abort.
  *
  * @param tim     Timer
- * @param[out] tmo_buf Pointer to a buffer variable
- * @retval 0  Success, active timer cancelled, timeout returned in '*tmo_buf'
+ * @param[out] tmo_ev Pointer to an event variable
+ * @retval 0  Success, active timer cancelled, timeout returned in '*tmo_ev'
  * @retval -1 Failure, timer already expired (or inactive)
  */
-int odp_timer_cancel(odp_timer_t tim, odp_buffer_t *tmo_buf);
-
-/**
- * Return timeout handle that is associated with timeout buffer
- *
- * Note: any invalid parameters will cause undefined behavior and may cause
- * the application to abort or crash.
- *
- * @param buf A buffer of type ODP_BUFFER_TYPE_TIMEOUT
- *
- * @return timeout handle
- */
-odp_timeout_t odp_timeout_from_buf(odp_buffer_t buf);
+int odp_timer_cancel(odp_timer_t tim, odp_event_t *tmo_ev);
 
 /**
  * Return timeout handle that is associated with timeout event
@@ -316,7 +303,7 @@ odp_timeout_t odp_timeout_from_buf(odp_buffer_t buf);
  * Note: any invalid parameters will cause undefined behavior and may cause
  * the application to abort or crash.
  *
- * @param buf An event of type ODP_EVENT_TIMEOUT
+ * @param ev An event of type ODP_EVENT_TIMEOUT
  *
  * @return timeout handle
  */
diff --git a/platform/linux-generic/odp_timer.c 
b/platform/linux-generic/odp_timer.c
index dd4cc72..7469278 100644
--- a/platform/linux-generic/odp_timer.c
+++ b/platform/linux-generic/odp_timer.c
@@ -739,17 +739,17 @@ odp_timer_t odp_timer_alloc(odp_timer_pool_t tpid,
        return ODP_TIMER_INVALID;
 }
 
-odp_buffer_t odp_timer_free(odp_timer_t hdl)
+odp_event_t odp_timer_free(odp_timer_t hdl)
 {
        odp_timer_pool *tp = handle_to_tp(hdl);
        uint32_t idx = handle_to_idx(hdl, tp);
        odp_buffer_t old_buf = timer_free(tp, idx);
-       return old_buf;
+       return odp_buffer_to_event(old_buf);
 }
 
 int odp_timer_set_abs(odp_timer_t hdl,
                      uint64_t abs_tck,
-                     odp_buffer_t *tmo_buf)
+                     odp_event_t *tmo_ev)
 {
        odp_timer_pool *tp = handle_to_tp(hdl);
        uint32_t idx = handle_to_idx(hdl, tp);
@@ -758,15 +758,15 @@ int odp_timer_set_abs(odp_timer_t hdl,
                return ODP_TIMER_TOOEARLY;
        if (odp_unlikely(abs_tck > cur_tick + tp->max_rel_tck))
                return ODP_TIMER_TOOLATE;
-       if (timer_reset(idx, abs_tck, tmo_buf, tp))
+       if (timer_reset(idx, abs_tck, (odp_buffer_t *)tmo_ev, tp))
                return ODP_TIMER_SUCCESS;
        else
-               return ODP_TIMER_NOBUF;
+               return ODP_TIMER_NOEVENT;
 }
 
 int odp_timer_set_rel(odp_timer_t hdl,
                      uint64_t rel_tck,
-                     odp_buffer_t *tmo_buf)
+                     odp_event_t *tmo_ev)
 {
        odp_timer_pool *tp = handle_to_tp(hdl);
        uint32_t idx = handle_to_idx(hdl, tp);
@@ -775,34 +775,26 @@ int odp_timer_set_rel(odp_timer_t hdl,
                return ODP_TIMER_TOOEARLY;
        if (odp_unlikely(rel_tck > tp->max_rel_tck))
                return ODP_TIMER_TOOLATE;
-       if (timer_reset(idx, abs_tck, tmo_buf, tp))
+       if (timer_reset(idx, abs_tck, (odp_buffer_t *)tmo_ev, tp))
                return ODP_TIMER_SUCCESS;
        else
-               return ODP_TIMER_NOBUF;
+               return ODP_TIMER_NOEVENT;
 }
 
-int odp_timer_cancel(odp_timer_t hdl, odp_buffer_t *tmo_buf)
+int odp_timer_cancel(odp_timer_t hdl, odp_event_t *tmo_ev)
 {
        odp_timer_pool *tp = handle_to_tp(hdl);
        uint32_t idx = handle_to_idx(hdl, tp);
        /* Set the expiration tick of the timer to TMO_INACTIVE */
        odp_buffer_t old_buf = timer_cancel(tp, idx, TMO_INACTIVE);
        if (old_buf != ODP_BUFFER_INVALID) {
-               *tmo_buf = old_buf;
+               *tmo_ev = odp_buffer_to_event(old_buf);
                return 0; /* Active timer cancelled, timeout returned */
        } else {
                return -1; /* Timer already expired, no timeout returned */
        }
 }
 
-odp_timeout_t odp_timeout_from_buf(odp_buffer_t buf)
-{
-       /* This check not mandated by the API specification */
-       if (_odp_buffer_type(buf) != ODP_BUFFER_TYPE_TIMEOUT)
-               ODP_ABORT("Buffer not a timeout");
-       return (odp_timeout_t)timeout_hdr_from_buf(buf);
-}
-
 odp_timeout_t odp_timeout_from_event(odp_event_t ev)
 {
        /* This check not mandated by the API specification */
-- 
2.2.2


_______________________________________________
lng-odp mailing list
lng-odp@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to