2019-06-25 11:12:58 +00:00
|
|
|
/* SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
* Copyright(c) 2010-2014 Intel Corporation
|
2018-05-15 09:49:22 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <stdint.h>
|
|
|
|
|
|
|
|
#include <rte_common.h>
|
|
|
|
#include <rte_alarm.h>
|
|
|
|
|
|
|
|
#include "test.h"
|
|
|
|
|
2023-09-13 12:21:49 +00:00
|
|
|
#ifndef RTE_EXEC_ENV_WINDOWS
|
2018-05-15 09:49:22 +00:00
|
|
|
static volatile int flag;
|
|
|
|
|
|
|
|
static void
|
|
|
|
test_alarm_callback(void *cb_arg)
|
|
|
|
{
|
|
|
|
flag = 1;
|
|
|
|
printf("Callback setting flag - OK. [cb_arg = %p]\n", cb_arg);
|
|
|
|
}
|
2023-09-13 12:21:49 +00:00
|
|
|
#endif
|
2018-05-15 09:49:22 +00:00
|
|
|
|
|
|
|
static int
|
|
|
|
test_alarm(void)
|
|
|
|
{
|
2020-06-18 16:55:50 +00:00
|
|
|
#ifdef RTE_EXEC_ENV_FREEBSD
|
2019-06-25 11:12:58 +00:00
|
|
|
printf("The alarm API is not supported on FreeBSD\n");
|
|
|
|
return 0;
|
|
|
|
#endif
|
2018-05-15 09:49:22 +00:00
|
|
|
|
2023-09-13 12:21:49 +00:00
|
|
|
#ifndef RTE_EXEC_ENV_WINDOWS
|
2018-05-15 09:49:22 +00:00
|
|
|
/* check if it will fail to set alarm with wrong us value */
|
|
|
|
printf("check if it will fail to set alarm with wrong ms values\n");
|
|
|
|
if (rte_eal_alarm_set(0, test_alarm_callback,
|
|
|
|
NULL) >= 0) {
|
|
|
|
printf("should not be successful with 0 us value\n");
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
if (rte_eal_alarm_set(UINT64_MAX - 1, test_alarm_callback,
|
|
|
|
NULL) >= 0) {
|
|
|
|
printf("should not be successful with (UINT64_MAX-1) us value\n");
|
|
|
|
return -1;
|
|
|
|
}
|
2023-09-13 12:21:49 +00:00
|
|
|
#endif
|
2018-05-15 09:49:22 +00:00
|
|
|
|
|
|
|
/* check if it will fail to set alarm with null callback parameter */
|
|
|
|
printf("check if it will fail to set alarm with null callback parameter\n");
|
2022-09-06 04:00:10 +00:00
|
|
|
if (rte_eal_alarm_set(10 /* ms */, NULL, NULL) >= 0) {
|
2018-05-15 09:49:22 +00:00
|
|
|
printf("should not be successful to set alarm with null callback parameter\n");
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* check if it will fail to remove alarm with null callback parameter */
|
|
|
|
printf("check if it will fail to remove alarm with null callback parameter\n");
|
|
|
|
if (rte_eal_alarm_cancel(NULL, NULL) == 0) {
|
|
|
|
printf("should not be successful to remove alarm with null callback parameter");
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
REGISTER_TEST_COMMAND(alarm_autotest, test_alarm);
|