net/mlx5: check VLAN push/pop support
[dpdk.git] / examples / timer / main.c
index 5a57e48..d270ce4 100644 (file)
@@ -18,8 +18,7 @@
 #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;
 
@@ -66,15 +65,14 @@ lcore_mainloop(__rte_unused void *arg)
 
        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;
                }
@@ -100,8 +98,10 @@ main(int argc, char **argv)
        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);
 
@@ -117,5 +117,8 @@ main(int argc, char **argv)
        /* call it on main lcore too */
        (void) lcore_mainloop(NULL);
 
+       /* clean up the EAL */
+       rte_eal_cleanup();
+
        return 0;
 }