From: Vladimir Serbinenko Date: Wed, 21 Jan 2015 09:28:52 +0000 (+0100) Subject: unix/cputime.c: Cache sc_clk_tck and check it for sanity. X-Git-Tag: 2.02-beta3~555 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=68581b009f6e943bd6ddf3c781db1c884832fa8e;p=thirdparty%2Fgrub.git unix/cputime.c: Cache sc_clk_tck and check it for sanity. --- diff --git a/ChangeLog b/ChangeLog index f9ac59915..4b9f9b21a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2015-01-20 Vladimir Serbinenko + + * grub-core/osdep/unix/cputime.c (grub_util_get_cpu_time_ms): Cache + sc_clk_tck and check it for sanity. + 2015-01-20 Vladimir Serbinenko * grub-core/kern/efi/mm.c (grub_efi_get_memory_map): Never return a diff --git a/grub-core/osdep/unix/cputime.c b/grub-core/osdep/unix/cputime.c index 47e3abc77..cff359a3b 100644 --- a/grub-core/osdep/unix/cputime.c +++ b/grub-core/osdep/unix/cputime.c @@ -9,7 +9,14 @@ grub_uint64_t grub_util_get_cpu_time_ms (void) { struct tms tm; + static long sc_clk_tck; + if (!sc_clk_tck) + { + sc_clk_tck = sysconf(_SC_CLK_TCK); + if (sc_clk_tck <= 0) + sc_clk_tck = 1000; + } times (&tm); - return (tm.tms_utime * 1000ULL) / sysconf(_SC_CLK_TCK); + return (tm.tms_utime * 1000ULL) / sc_clk_tck; }