2015-07-25 12:36, Ravi Kerur > static int > set_tsc_freq_from_sysctl(void) > { > size_t sz; > int tmp; > + uint64_t tsc_hz; > > sz = sizeof(tmp); > tmp = 0; > @@ -94,42 +77,23 @@ set_tsc_freq_from_sysctl(void) > else if (tmp != 1) > RTE_LOG(WARNING, EAL, "TSC is not invariant\n"); > > - sz = sizeof(eal_tsc_resolution_hz); > - if (sysctlbyname("machdep.tsc_freq", &eal_tsc_resolution_hz, &sz, NULL, > 0)) { > + sz = sizeof(tsc_hz); > + if (sysctlbyname("machdep.tsc_freq", &tsc_hz, &sz, NULL, 0)) { > RTE_LOG(WARNING, EAL, "%s\n", strerror(errno)); > return -1; > } > + rte_set_tsc_hz(tsc_hz); > > return 0; > } [...] > --- /dev/null > +++ b/lib/librte_eal/common/eal_common_timer.c > +void > +rte_set_tsc_hz(uint64_t tsc_hz) > +{ > + eal_tsc_resolution_hz = tsc_hz; > +} [...] > +void > +set_tsc_freq(void) > +{ > + if (set_tsc_freq_from_clock() < 0) > + set_tsc_freq_fallback();
It would be simpler to get value from return of these functions and store it in eal_tsc_resolution_hz here.