xref: /dpdk/app/test/test_alarm.c (revision 97b914f4e715565d53d38ac6e04815b9be5e58a9)
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2010-2014 Intel Corporation
3  */
4 
5 #include <stdio.h>
6 #include <stdint.h>
7 
8 #include <rte_common.h>
9 #include <rte_alarm.h>
10 
11 #include "test.h"
12 
13 #ifndef RTE_EXEC_ENV_WINDOWS
14 static volatile int flag;
15 
16 static void
17 test_alarm_callback(void *cb_arg)
18 {
19 	flag = 1;
20 	printf("Callback setting flag - OK. [cb_arg = %p]\n", cb_arg);
21 }
22 #endif
23 
24 static int
25 test_alarm(void)
26 {
27 #ifdef RTE_EXEC_ENV_FREEBSD
28 	printf("The alarm API is not supported on FreeBSD\n");
29 	return 0;
30 #endif
31 
32 #ifndef RTE_EXEC_ENV_WINDOWS
33 	/* check if it will fail to set alarm with wrong us value */
34 	printf("check if it will fail to set alarm with wrong ms values\n");
35 	if (rte_eal_alarm_set(0, test_alarm_callback,
36 						NULL) >= 0) {
37 		printf("should not be successful with 0 us value\n");
38 		return -1;
39 	}
40 	if (rte_eal_alarm_set(UINT64_MAX - 1, test_alarm_callback,
41 						NULL) >= 0) {
42 		printf("should not be successful with (UINT64_MAX-1) us value\n");
43 		return -1;
44 	}
45 #endif
46 
47 	/* check if it will fail to set alarm with null callback parameter */
48 	printf("check if it will fail to set alarm with null callback parameter\n");
49 	if (rte_eal_alarm_set(10 /* ms */, NULL, NULL) >= 0) {
50 		printf("should not be successful to set alarm with null callback parameter\n");
51 		return -1;
52 	}
53 
54 	/* check if it will fail to remove alarm with null callback parameter */
55 	printf("check if it will fail to remove alarm with null callback parameter\n");
56 	if (rte_eal_alarm_cancel(NULL, NULL) == 0) {
57 		printf("should not be successful to remove alarm with null callback parameter");
58 		return -1;
59 	}
60 
61 	return 0;
62 }
63 
64 REGISTER_TEST_COMMAND(alarm_autotest, test_alarm);
65