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 Richardsonstatic 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 Richardsontest_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