diff options
author | Matias Elo <matias.elo@nokia.com> | 2023-02-24 09:39:16 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-24 09:39:16 +0200 |
commit | 0f2f3271f64b25d7ce101b7a5c82b7fc17ba2d32 (patch) | |
tree | 5d4df86a452c52b1421b8039835ec793ac4019c7 /test/validation/api/timer/timer.c | |
parent | 282188e33695bb6863e289df61e0dfbd87ca205c (diff) | |
parent | c7c99cfd5635da8c0afc7f3803ce6e1c82c3465b (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.c | 68 |
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"); |