#include <rte_timer.h>
#include <rte_debug.h>
-#define TIMER_RESOLUTION_CYCLES 20000000ULL /* around 10ms at 2 Ghz */
-
+static uint64_t timer_resolution_cycles;
static struct rte_timer timer0;
static struct rte_timer timer1;
while (1) {
/*
- * Call the timer handler on each core: as we don't
- * need a very precise timer, so only call
- * rte_timer_manage() every ~10ms (at 2Ghz). In a real
- * application, this will enhance performances as
- * reading the HPET timer is not efficient.
+ * Call the timer handler on each core: as we don't need a
+ * very precise timer, so only call rte_timer_manage()
+ * every ~10ms. In a real application, this will enhance
+ * performances as reading the HPET timer is not efficient.
*/
- cur_tsc = rte_rdtsc();
+ cur_tsc = rte_get_timer_cycles();
diff_tsc = cur_tsc - prev_tsc;
- if (diff_tsc > TIMER_RESOLUTION_CYCLES) {
+ if (diff_tsc > timer_resolution_cycles) {
rte_timer_manage();
prev_tsc = cur_tsc;
}
rte_timer_init(&timer0);
rte_timer_init(&timer1);
- /* load timer0, every second, on main lcore, reloaded automatically */
hz = rte_get_timer_hz();
+ timer_resolution_cycles = hz * 10 / 1000; /* around 10ms */
+
+ /* load timer0, every second, on main lcore, reloaded automatically */
lcore_id = rte_lcore_id();
rte_timer_reset(&timer0, hz, PERIODICAL, lcore_id, timer0_cb, NULL);