summaryrefslogtreecommitdiffstats
path: root/src/dpdk/lib/librte_eal/common/eal_common_timer.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/dpdk/lib/librte_eal/common/eal_common_timer.c')
-rw-r--r--src/dpdk/lib/librte_eal/common/eal_common_timer.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/dpdk/lib/librte_eal/common/eal_common_timer.c b/src/dpdk/lib/librte_eal/common/eal_common_timer.c
index c4227cd8..72656176 100644
--- a/src/dpdk/lib/librte_eal/common/eal_common_timer.c
+++ b/src/dpdk/lib/librte_eal/common/eal_common_timer.c
@@ -47,8 +47,11 @@
/* The frequency of the RDTSC timer resolution */
static uint64_t eal_tsc_resolution_hz;
+/* Pointer to user delay function */
+void (*rte_delay_us)(unsigned int) = NULL;
+
void
-rte_delay_us(unsigned us)
+rte_delay_us_block(unsigned int us)
{
const uint64_t start = rte_get_timer_cycles();
const uint64_t ticks = (uint64_t)us * rte_get_timer_hz() / 1E6;
@@ -84,3 +87,15 @@ set_tsc_freq(void)
RTE_LOG(DEBUG, EAL, "TSC frequency is ~%" PRIu64 " KHz\n", freq / 1000);
eal_tsc_resolution_hz = freq;
}
+
+void rte_delay_us_callback_register(void (*userfunc)(unsigned int))
+{
+ rte_delay_us = userfunc;
+}
+
+static void __attribute__((constructor))
+rte_timer_init(void)
+{
+ /* set rte_delay_us_block as a delay function */
+ rte_delay_us_callback_register(rte_delay_us_block);
+}