xref: /dpdk/app/test/test_cycles.c (revision e0a8442ccd15bafbb7eb150c35331c8e3b828c53)
1a9de470cSBruce Richardson /* SPDX-License-Identifier: BSD-3-Clause
2a9de470cSBruce Richardson  * Copyright(c) 2010-2014 Intel Corporation
3a9de470cSBruce Richardson  */
4a9de470cSBruce Richardson 
5a9de470cSBruce Richardson #include <stdio.h>
6a9de470cSBruce Richardson #include <stdint.h>
7a9de470cSBruce Richardson 
8a9de470cSBruce Richardson #include <rte_common.h>
9a9de470cSBruce Richardson #include <rte_cycles.h>
10a9de470cSBruce Richardson 
11a9de470cSBruce Richardson #include "test.h"
12a9de470cSBruce Richardson 
13a9de470cSBruce Richardson /*
14a9de470cSBruce Richardson  * rte_delay_us_callback test
15a9de470cSBruce Richardson  *
16a9de470cSBruce Richardson  * - check if callback is correctly registered/unregistered
17a9de470cSBruce Richardson  *
18a9de470cSBruce Richardson  */
19a9de470cSBruce Richardson 
20a9de470cSBruce Richardson static unsigned int pattern;
my_rte_delay_us(unsigned int us)21a9de470cSBruce Richardson static void my_rte_delay_us(unsigned int us)
22a9de470cSBruce Richardson {
23a9de470cSBruce Richardson 	pattern += us;
24a9de470cSBruce Richardson }
25a9de470cSBruce Richardson 
26a9de470cSBruce Richardson static int
test_user_delay_us(void)27a9de470cSBruce Richardson test_user_delay_us(void)
28a9de470cSBruce Richardson {
29a9de470cSBruce Richardson 	pattern = 0;
30a9de470cSBruce Richardson 
31a9de470cSBruce Richardson 	rte_delay_us(2);
32a9de470cSBruce Richardson 	if (pattern != 0)
33a9de470cSBruce Richardson 		return -1;
34a9de470cSBruce Richardson 
35a9de470cSBruce Richardson 	/* register custom delay function */
36a9de470cSBruce Richardson 	rte_delay_us_callback_register(my_rte_delay_us);
37a9de470cSBruce Richardson 
38a9de470cSBruce Richardson 	rte_delay_us(2);
39a9de470cSBruce Richardson 	if (pattern != 2)
40a9de470cSBruce Richardson 		return -1;
41a9de470cSBruce Richardson 
42a9de470cSBruce Richardson 	rte_delay_us(3);
43a9de470cSBruce Richardson 	if (pattern != 5)
44a9de470cSBruce Richardson 		return -1;
45a9de470cSBruce Richardson 
46a9de470cSBruce Richardson 	/* restore original delay function */
47a9de470cSBruce Richardson 	rte_delay_us_callback_register(rte_delay_us_block);
48a9de470cSBruce Richardson 
49a9de470cSBruce Richardson 	rte_delay_us(3);
50a9de470cSBruce Richardson 	if (pattern != 5)
51a9de470cSBruce Richardson 		return -1;
52a9de470cSBruce Richardson 
53a9de470cSBruce Richardson 	return 0;
54a9de470cSBruce Richardson }
55a9de470cSBruce Richardson 
56*e0a8442cSBruce Richardson REGISTER_FAST_TEST(user_delay_us, true, true, test_user_delay_us);
57