MCPcopy Create free account
hub / github.com/F-Stack/f-stack / event_timer_arm

Function event_timer_arm

dpdk/app/test/test_event_timer_adapter.c:1303–1353  ·  view source on GitHub ↗

Test various cases in arming timers */

Source from the content-addressed store, hash-verified

1301
1302/* Test various cases in arming timers */
1303static int
1304event_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.

Callers

nothing calls this directly

Calls 5

rte_mempool_getFunction · 0.85
rte_strerrorFunction · 0.85
timeout_event_dequeueFunction · 0.85
rte_mempool_putFunction · 0.85

Tested by

no test coverage detected