Test various cases in arming timers */
| 1301 | |
| 1302 | /* Test various cases in arming timers */ |
| 1303 | static int |
| 1304 | event_timer_arm(void) |
| 1305 | { |
| 1306 | uint16_t n; |
| 1307 | int ret; |
| 1308 | struct rte_event_timer_adapter *adapter = timdev; |
| 1309 | struct rte_event_timer *evtim = NULL; |
| 1310 | struct rte_event evs[BATCH_SIZE]; |
| 1311 | uint64_t ticks = 5; |
| 1312 | const struct rte_event_timer init_tim = { |
| 1313 | .ev.op = RTE_EVENT_OP_NEW, |
| 1314 | .ev.queue_id = TEST_QUEUE_ID, |
| 1315 | .ev.sched_type = RTE_SCHED_TYPE_ATOMIC, |
| 1316 | .ev.priority = RTE_EVENT_DEV_PRIORITY_NORMAL, |
| 1317 | .ev.event_type = RTE_EVENT_TYPE_TIMER, |
| 1318 | .state = RTE_EVENT_TIMER_NOT_ARMED, |
| 1319 | .timeout_ticks = CALC_TICKS(ticks), /**< expire in .5 sec */ |
| 1320 | }; |
| 1321 | |
| 1322 | rte_mempool_get(eventdev_test_mempool, (void **)&evtim); |
| 1323 | if (evtim == NULL) { |
| 1324 | /* Failed to get an event timer object */ |
| 1325 | return TEST_FAILED; |
| 1326 | } |
| 1327 | |
| 1328 | /* Set up a timer */ |
| 1329 | *evtim = init_tim; |
| 1330 | evtim->ev.event_ptr = evtim; |
| 1331 | |
| 1332 | /* Test single timer arm succeeds */ |
| 1333 | ret = rte_event_timer_arm_burst(adapter, &evtim, 1); |
| 1334 | TEST_ASSERT_EQUAL(ret, 1, "Failed to arm event timer: %s\n", |
| 1335 | rte_strerror(rte_errno)); |
| 1336 | TEST_ASSERT_EQUAL(evtim->state, RTE_EVENT_TIMER_ARMED, "Event timer " |
| 1337 | "in incorrect state"); |
| 1338 | |
| 1339 | /* Test arm of armed timer fails */ |
| 1340 | ret = rte_event_timer_arm_burst(adapter, &evtim, 1); |
| 1341 | TEST_ASSERT_EQUAL(ret, 0, "expected return value from " |
| 1342 | "rte_event_timer_arm_burst: 0, got: %d", ret); |
| 1343 | TEST_ASSERT_EQUAL(rte_errno, EALREADY, "Unexpected rte_errno value " |
| 1344 | "after arming already armed timer"); |
| 1345 | |
| 1346 | n = timeout_event_dequeue(evs, RTE_DIM(evs), WAIT_TICKS(ticks)); |
| 1347 | TEST_ASSERT_EQUAL(n, 1, "Failed to dequeue expected number of expiry " |
| 1348 | "events from event device"); |
| 1349 | |
| 1350 | rte_mempool_put(eventdev_test_mempool, evtim); |
| 1351 | |
| 1352 | return TEST_SUCCESS; |
| 1353 | } |
| 1354 | |
| 1355 | /* This test checks that repeated references to the same event timer in the |
| 1356 | * arm request work as expected; only the first one through should succeed. |
nothing calls this directly
no test coverage detected