diff options
Diffstat (limited to 'vppinfra/vppinfra/time.c')
-rw-r--r-- | vppinfra/vppinfra/time.c | 53 |
1 files changed, 34 insertions, 19 deletions
diff --git a/vppinfra/vppinfra/time.c b/vppinfra/vppinfra/time.c index 9af599ac10c..e62ee8636ac 100644 --- a/vppinfra/vppinfra/time.c +++ b/vppinfra/vppinfra/time.c @@ -45,9 +45,10 @@ #include <sys/time.h> #include <fcntl.h> -/* Not very accurate way of determining cpu clock frequency +/* Not very accurate way of determining cpu clock frequency for unix. Better to use /proc/cpuinfo on linux. */ -static f64 estimate_clock_frequency (f64 sample_time) +static f64 +estimate_clock_frequency (f64 sample_time) { /* Round to nearest 100KHz. */ const f64 round_to_units = 100e5; @@ -70,11 +71,12 @@ static f64 estimate_clock_frequency (f64 sample_time) } /* Fetch cpu frequency via parseing /proc/cpuinfo. - Only works for Linux. */ -static f64 clock_frequency_from_proc_filesystem (void) + Only works for Linux. */ +static f64 +clock_frequency_from_proc_filesystem (void) { - f64 cpu_freq=1e9; /* better than 40... */ - f64 ppc_timebase=0; /* warnings be gone */ + f64 cpu_freq = 1e9; /* better than 40... */ + f64 ppc_timebase = 0; /* warnings be gone */ int fd; unformat_input_t input; @@ -82,7 +84,7 @@ static f64 clock_frequency_from_proc_filesystem (void) #if defined(__aarch64__) return 0.0; #endif - + cpu_freq = 0; fd = open ("/proc/cpuinfo", 0); if (fd < 0) @@ -113,8 +115,9 @@ static f64 clock_frequency_from_proc_filesystem (void) } /* Fetch cpu frequency via reading /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq - Only works for Linux. */ -static f64 clock_frequency_from_sys_filesystem (void) + Only works for Linux. */ +static f64 +clock_frequency_from_sys_filesystem (void) { f64 cpu_freq; int fd; @@ -131,11 +134,12 @@ static f64 clock_frequency_from_sys_filesystem (void) cpu_freq *= 1e3; /* measured in kHz */ unformat_free (&input); close (fd); - done: +done: return cpu_freq; } -f64 os_cpu_clock_frequency (void) +f64 +os_cpu_clock_frequency (void) { f64 cpu_freq; @@ -157,7 +161,8 @@ f64 os_cpu_clock_frequency (void) #endif /* CLIB_UNIX */ /* Initialize time. */ -void clib_time_init (clib_time_t * c) +void +clib_time_init (clib_time_t * c) { memset (c, 0, sizeof (c[0])); c->clocks_per_second = os_cpu_clock_frequency (); @@ -172,7 +177,8 @@ void clib_time_init (clib_time_t * c) c->init_cpu_time = c->last_verify_cpu_time = c->last_cpu_time; } -void clib_time_verify_frequency (clib_time_t * c) +void +clib_time_verify_frequency (clib_time_t * c) { f64 now_reference = unix_time_now (); f64 dtr = now_reference - c->last_verify_reference_time; @@ -183,13 +189,13 @@ void clib_time_verify_frequency (clib_time_t * c) c->last_verify_cpu_time = c->last_cpu_time; c->last_verify_reference_time = now_reference; - /* - * Is the reported reference interval non-positive, - * or off by a factor of two - or 8 seconds - whichever is larger? + /* + * Is the reported reference interval non-positive, + * or off by a factor of two - or 8 seconds - whichever is larger? * Someone reset the clock behind our back. */ - dtr_max = (f64)(2ULL<<c->log2_clocks_per_frequency_verify) / - (f64)(1ULL<<c->log2_clocks_per_second); + dtr_max = (f64) (2ULL << c->log2_clocks_per_frequency_verify) / + (f64) (1ULL << c->log2_clocks_per_second); dtr_max = dtr_max > 8.0 ? dtr_max : 8.0; if (dtr <= 0.0 || dtr > dtr_max) @@ -198,10 +204,19 @@ void clib_time_verify_frequency (clib_time_t * c) return; } - c->clocks_per_second = flt_round_nearest ((f64) dtc / (dtr * round_units)) * round_units; + c->clocks_per_second = + flt_round_nearest ((f64) dtc / (dtr * round_units)) * round_units; c->seconds_per_clock = 1 / c->clocks_per_second; /* Double time between verifies; max at 64 secs ~ 1 minute. */ if (c->log2_clocks_per_frequency_verify < c->log2_clocks_per_second + 6) c->log2_clocks_per_frequency_verify += 1; } + +/* + * fd.io coding-style-patch-verification: ON + * + * Local Variables: + * eval: (c-set-style "gnu") + * End: + */ |