]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
unix/cputime.c: Cache sc_clk_tck and check it for sanity.
authorVladimir Serbinenko <phcoder@gmail.com>
Wed, 21 Jan 2015 09:28:52 +0000 (10:28 +0100)
committerVladimir Serbinenko <phcoder@gmail.com>
Wed, 21 Jan 2015 16:42:15 +0000 (17:42 +0100)
ChangeLog
grub-core/osdep/unix/cputime.c

index f9ac59915bbb97c21285a1994bca25675a3f5269..4b9f9b21ae4188d5f4b3d02e84cdd2b231fcc2e2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2015-01-20  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * 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  <phcoder@gmail.com>
 
        * grub-core/kern/efi/mm.c (grub_efi_get_memory_map): Never return a
index 47e3abc77bfe226b3d2b60e2daf82894d89327bd..cff359a3b94c5830b2bb1160c65fef29a058cf6d 100644 (file)
@@ -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;
 }