aboutsummaryrefslogtreecommitdiff
path: root/test/validation/api/timer/timer.c
diff options
context:
space:
mode:
authorMatias Elo <matias.elo@nokia.com>2023-02-24 09:39:16 +0200
committerGitHub <noreply@github.com>2023-02-24 09:39:16 +0200
commit0f2f3271f64b25d7ce101b7a5c82b7fc17ba2d32 (patch)
tree5d4df86a452c52b1421b8039835ec793ac4019c7 /test/validation/api/timer/timer.c
parent282188e33695bb6863e289df61e0dfbd87ca205c (diff)
parentc7c99cfd5635da8c0afc7f3803ce6e1c82c3465b (diff)
Merge ODP v1.40.0.0v1.40.0.0_DPDK_19.11
Merge ODP linux-generic v1.40.0.0 into linux-dpdk.
Diffstat (limited to 'test/validation/api/timer/timer.c')
-rw-r--r--test/validation/api/timer/timer.c68
1 files changed, 56 insertions, 12 deletions
diff --git a/test/validation/api/timer/timer.c b/test/validation/api/timer/timer.c
index 1c0a16349..0e3919b73 100644
--- a/test/validation/api/timer/timer.c
+++ b/test/validation/api/timer/timer.c
@@ -329,8 +329,10 @@ static void timer_test_capa(void)
CU_ASSERT_FATAL(ODP_CLOCK_SRC_0 + 4 == ODP_CLOCK_SRC_4);
CU_ASSERT_FATAL(ODP_CLOCK_SRC_0 + 5 == ODP_CLOCK_SRC_5);
CU_ASSERT_FATAL(ODP_CLOCK_SRC_5 + 1 == ODP_CLOCK_NUM_SRC);
+#if ODP_DEPRECATED_API
CU_ASSERT_FATAL(ODP_CLOCK_CPU == ODP_CLOCK_DEFAULT);
CU_ASSERT_FATAL(ODP_CLOCK_EXT == ODP_CLOCK_SRC_1);
+#endif
for (i = 0; i < ODP_CLOCK_NUM_SRC; i++) {
clk_src = ODP_CLOCK_SRC_0 + i;
@@ -666,6 +668,7 @@ static void timer_pool_max_res(void)
odp_queue_param_t queue_param;
odp_timer_pool_t tp;
odp_timer_t timer;
+ odp_timer_start_t start_param;
odp_pool_param_t pool_param;
odp_pool_t pool;
odp_queue_t queue;
@@ -729,7 +732,11 @@ static void timer_pool_max_res(void)
ev = odp_timeout_to_event(tmo);
CU_ASSERT_FATAL(ev != ODP_EVENT_INVALID);
- ret = odp_timer_set_rel(timer, tick, &ev);
+ start_param.tick_type = ODP_TIMER_TICK_REL;
+ start_param.tick = tick;
+ start_param.tmo_ev = ev;
+
+ ret = odp_timer_start(timer, &start_param);
CU_ASSERT(ret == ODP_TIMER_SUCCESS);
ev = ODP_EVENT_INVALID;
@@ -1145,6 +1152,7 @@ static void timer_test_event_type(odp_queue_type_t queue_type,
odp_queue_param_t queue_param;
odp_timer_pool_param_t timer_param;
odp_timer_pool_t timer_pool;
+ odp_timer_start_t start_param;
odp_queue_t queue;
odp_timeout_t tmo;
odp_buffer_t buf;
@@ -1231,7 +1239,11 @@ static void timer_test_event_type(odp_queue_type_t queue_type,
timer[i] = odp_timer_alloc(timer_pool, queue, user_ctx);
CU_ASSERT_FATAL(timer[i] != ODP_TIMER_INVALID);
- ret = odp_timer_set_rel(timer[i], (i + 1) * period_tick, &ev);
+ start_param.tick_type = ODP_TIMER_TICK_REL;
+ start_param.tick = (i + 1) * period_tick;
+ start_param.tmo_ev = ev;
+
+ ret = odp_timer_start(timer[i], &start_param);
if (ret == ODP_TIMER_TOO_NEAR)
ODPH_DBG("Timer set failed. Too near %i.\n", i);
@@ -1332,6 +1344,7 @@ static void timer_test_queue_type(odp_queue_type_t queue_type, int priv, int exp
odp_queue_param_t queue_param;
odp_timer_pool_param_t tparam;
odp_timer_pool_t tp;
+ odp_timer_start_t start_param;
odp_queue_t queue;
odp_timer_t tim;
int i, ret, num_tmo;
@@ -1411,7 +1424,12 @@ static void timer_test_queue_type(odp_queue_type_t queue_type, int priv, int exp
timer[i] = tim;
tick = tick_base + ((i + 1) * period_tick);
- ret = odp_timer_set_abs(tim, tick, &ev);
+
+ start_param.tick_type = ODP_TIMER_TICK_ABS;
+ start_param.tick = tick;
+ start_param.tmo_ev = ev;
+
+ ret = odp_timer_start(tim, &start_param);
target_tick[i] = tick;
target_nsec[i] = nsec_base + ((i + 1) * period_ns);
@@ -1541,12 +1559,12 @@ static void timer_test_cancel(void)
odp_queue_param_t queue_param;
odp_timer_capability_t capa;
odp_timer_pool_t tp;
+ odp_timer_start_t start_param;
odp_queue_t queue;
odp_timer_t tim;
odp_event_t ev;
odp_timeout_t tmo;
odp_timer_set_t rc;
- uint64_t tick;
int ret;
memset(&capa, 0, sizeof(capa));
@@ -1597,9 +1615,11 @@ static void timer_test_cancel(void)
if (ev == ODP_EVENT_INVALID)
CU_FAIL_FATAL("Failed to allocate timeout");
- tick = odp_timer_ns_to_tick(tp, tparam.max_tmo / 2);
+ start_param.tick_type = ODP_TIMER_TICK_REL;
+ start_param.tick = odp_timer_ns_to_tick(tp, tparam.max_tmo / 2);
+ start_param.tmo_ev = ev;
- rc = odp_timer_set_rel(tim, tick, &ev);
+ rc = odp_timer_start(tim, &start_param);
if (rc != ODP_TIMER_SUCCESS)
CU_FAIL_FATAL("Failed to set timer (relative time)");
@@ -1645,6 +1665,7 @@ static void timer_test_tmo_limit(odp_queue_type_t queue_type,
odp_queue_param_t queue_param;
odp_timer_pool_param_t timer_param;
odp_timer_pool_t timer_pool;
+ odp_timer_start_t start_param;
odp_queue_t queue;
odp_timeout_t tmo;
odp_event_t ev;
@@ -1731,7 +1752,12 @@ static void timer_test_tmo_limit(odp_queue_type_t queue_type,
CU_ASSERT(ev != ODP_EVENT_INVALID);
t1 = odp_time_local();
- ret = odp_timer_set_rel(timer[i], tmo_tick, &ev);
+
+ start_param.tick_type = ODP_TIMER_TICK_REL;
+ start_param.tick = tmo_tick;
+ start_param.tmo_ev = ev;
+
+ ret = odp_timer_start(timer[i], &start_param);
if (ret == ODP_TIMER_TOO_NEAR)
ODPH_DBG("Timer set failed. Too near %i.\n", i);
@@ -1943,6 +1969,7 @@ static int worker_entrypoint(void *arg ODP_UNUSED)
struct timespec ts;
uint32_t nstale;
odp_timer_set_t timer_rc;
+ odp_timer_start_t start_param;
odp_timer_pool_t tp = global_mem->tp;
odp_pool_t tbp = global_mem->tbp;
uint32_t num_timers = global_mem->timers_per_thread;
@@ -2008,7 +2035,13 @@ static int worker_entrypoint(void *arg ODP_UNUSED)
(rand_r(&seed) % RANGE_MS) * 1000000ULL;
tck = odp_timer_current_tick(tp) +
odp_timer_ns_to_tick(tp, nsec);
- timer_rc = odp_timer_set_abs(tt[i].tim, tck, &tt[i].ev);
+
+ start_param.tick_type = ODP_TIMER_TICK_ABS;
+ start_param.tick = tck;
+ start_param.tmo_ev = tt[i].ev;
+ tt[i].ev = ODP_EVENT_INVALID;
+
+ timer_rc = odp_timer_start(tt[i].tim, &start_param);
if (timer_rc == ODP_TIMER_TOO_NEAR) {
ODPH_ERR("Missed tick, setting timer\n");
} else if (timer_rc != ODP_TIMER_SUCCESS) {
@@ -2058,23 +2091,34 @@ static int worker_entrypoint(void *arg ODP_UNUSED)
odp_timer_set_t rc;
uint64_t cur_tick;
uint64_t tck;
+ int reset_timer = 0;
- if (tt[i].ev != ODP_EVENT_INVALID)
+ if (tt[i].ev != ODP_EVENT_INVALID) {
/* Timer inactive => set */
nset++;
- else if (odp_timer_current_tick(tp) >= tt[i].tick)
+ } else if (odp_timer_current_tick(tp) >= tt[i].tick) {
/* Timer just expired. */
goto sleep;
- else
+ } else {
/* Timer active => reset */
nreset++;
+ reset_timer = 1;
+ }
nsec = min_tmo + THREE_POINT_THREE_MSEC +
(rand_r(&seed) % RANGE_MS) * 1000000ULL;
tck = odp_timer_ns_to_tick(tp, nsec);
cur_tick = odp_timer_current_tick(tp);
- rc = odp_timer_set_rel(tt[i].tim, tck, &tt[i].ev);
+
+ start_param.tick_type = ODP_TIMER_TICK_REL;
+ start_param.tick = tck;
+ start_param.tmo_ev = tt[i].ev;
+
+ if (reset_timer)
+ rc = odp_timer_restart(tt[i].tim, &start_param);
+ else
+ rc = odp_timer_start(tt[i].tim, &start_param);
if (rc == ODP_TIMER_TOO_NEAR) {
CU_FAIL("Failed to set timer: TOO NEAR");