aboutsummaryrefslogtreecommitdiff
path: root/platform/linux-dpdk/odp_timer.c
diff options
context:
space:
mode:
authorMatias Elo <matias.elo@nokia.com>2018-12-03 13:59:51 +0200
committerMaxim Uvarov <maxim.uvarov@linaro.org>2018-12-13 12:30:18 +0300
commitf59cd5efc9fd3b64e9ca16a5850f6d406c31e454 (patch)
tree6c96df1a8c5e7e5a22db71c4ac1a9fa32e79ff71 /platform/linux-dpdk/odp_timer.c
parent0c12313de472252b26b7993ce8d7e9f05b042e4a (diff)
Port cc91c9521 "linux-gen: timer: run inline timers during queue dequeue operations"
Signed-off-by: Matias Elo <matias.elo@nokia.com> Reviewed-by: Bill Fischofer <bill.fischofer@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
Diffstat (limited to 'platform/linux-dpdk/odp_timer.c')
-rw-r--r--platform/linux-dpdk/odp_timer.c18
1 files changed, 7 insertions, 11 deletions
diff --git a/platform/linux-dpdk/odp_timer.c b/platform/linux-dpdk/odp_timer.c
index 78b206404..1a5ec2495 100644
--- a/platform/linux-dpdk/odp_timer.c
+++ b/platform/linux-dpdk/odp_timer.c
@@ -13,8 +13,9 @@
#include <odp/api/timer.h>
#include <odp/api/plat/queue_inlines.h>
-#include <odp_init_internal.h>
#include <odp_debug_internal.h>
+#include <odp_init_internal.h>
+#include <odp_queue_if.h>
#include <odp_ring_internal.h>
#include <odp_timer_internal.h>
@@ -25,9 +26,6 @@
* - Remove "struct timer_pool_s"
*/
-/* TODO: Add this to queue interface. Sets a queue to poll timer on dequeue */
-void queue_enable_timer_poll(odp_queue_t queue);
-
/* Timer states */
#define NOT_TICKING 0
#define EXPIRED 1
@@ -357,10 +355,8 @@ odp_timer_t odp_timer_alloc(odp_timer_pool_t tp,
timer->queue = queue;
timer->tmo_event = ODP_EVENT_INVALID;
- /* Enable timer polling from dequeue operation. Scheduler polls timer
- * by default. */
- if (odp_queue_type(queue) == ODP_QUEUE_TYPE_PLAIN)
- queue_enable_timer_poll(queue);
+ /* Add timer to queue */
+ queue_fn->timer_add(queue);
odp_ticketlock_lock(&timer_pool->lock);
@@ -400,10 +396,10 @@ retry:
ev = ODP_EVENT_INVALID;
}
- odp_ticketlock_unlock(&timer->lock);
+ /* Remove timer from queue */
+ queue_fn->timer_rem(timer->queue);
- /* TODO: disable timer polling from queue. Needs better queue <-> timer
- * interface. */
+ odp_ticketlock_unlock(&timer->lock);
odp_ticketlock_lock(&timer_pool->lock);