]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
Move cpu time retrieval to separate grub_util_get_cpu_time_ms
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Tue, 15 Oct 2013 11:13:53 +0000 (13:13 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Tue, 15 Oct 2013 11:13:53 +0000 (13:13 +0200)
and remove export.h.

ChangeLog
grub-core/Makefile.am
grub-core/Makefile.core.def
grub-core/osdep/cputime.c [new file with mode: 0644]
grub-core/osdep/unix/cputime.c [new file with mode: 0644]
grub-core/osdep/windows/cputime.c [new file with mode: 0644]
grub-core/tests/video_checksum.c
include/grub/emu/export.h [deleted file]
include/grub/emu/misc.h

index 5aa1e86307c01fbd8abd1d3de01a3752ddd1d604..f650689c28be7b0e604de607cf32bfb0643ddf60 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2013-10-15  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       Move cpu time retrieval to separate grub_util_get_cpu_time_ms
+       and remove export.h.
+
 2013-10-15  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * grub-core/kern/emu/error.c: Removed.
index 630b866ee0b643ee6abf90ec74bad634a954191a..c0ceb216f4ba54d78859f30af692dff3beb30496 100644 (file)
@@ -217,7 +217,6 @@ endif
 if COND_emu
 KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/datetime.h
 KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/emu/misc.h
-KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/emu/export.h
 KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/emu/net.h
 KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/emu/hostdisk.h
 KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/extcmd.h
index 9bdb2bec1ff32d600b71ff0972e9293f598199dd..8751adff8d43fb95cf9b6df1a3d23dc495bfd2ec 100644 (file)
@@ -258,6 +258,9 @@ kernel = {
   emu = osdep/emunet.c;
   extra_dist = osdep/linux/emunet.c;
   extra_dist = osdep/basic/emunet.c;
+  emu = osdep/cputime.c;
+  extra_dist = osdep/unix/cputime.c;
+  extra_dist = osdep/windows/cputime.c;
 
   videoinkernel = term/gfxterm.c;
   videoinkernel = font/font.c;
diff --git a/grub-core/osdep/cputime.c b/grub-core/osdep/cputime.c
new file mode 100644 (file)
index 0000000..d3ee4c8
--- /dev/null
@@ -0,0 +1,5 @@
+#ifdef __MINGW32__
+#include "windows/cputime.c"
+#else
+#include "unix/cputime.c"
+#endif
diff --git a/grub-core/osdep/unix/cputime.c b/grub-core/osdep/unix/cputime.c
new file mode 100644 (file)
index 0000000..47e3abc
--- /dev/null
@@ -0,0 +1,15 @@
+#include <config.h>
+#include <config-util.h>
+
+#include <sys/times.h>
+#include <unistd.h>
+#include <grub/emu/misc.h>
+
+grub_uint64_t
+grub_util_get_cpu_time_ms (void)
+{
+  struct tms tm;
+
+  times (&tm); 
+  return (tm.tms_utime * 1000ULL) / sysconf(_SC_CLK_TCK);
+}
diff --git a/grub-core/osdep/windows/cputime.c b/grub-core/osdep/windows/cputime.c
new file mode 100644 (file)
index 0000000..3568aa2
--- /dev/null
@@ -0,0 +1,19 @@
+#include <config.h>
+#include <config-util.h>
+
+#include <grub/emu/misc.h>
+#include <windows.h>
+
+grub_uint64_t
+grub_util_get_cpu_time_ms (void)
+{
+  FILETIME cr, ex, ke, us;
+  ULARGE_INTEGER us_ul;
+
+  GetProcessTimes (GetCurrentProcess (), &cr, &ex, &ke, &us);
+  us_ul.LowPart = us.dwLowDateTime;
+  us_ul.HighPart = us.dwHighDateTime;
+
+  return us_ul.QuadPart / 10000;
+}
+
index 33b32c0516fe7cc623bfb6c3d68d3df35eb70f5a..865266f9f8c00668093e769d4729e63cce09ae60 100644 (file)
@@ -485,11 +485,6 @@ grub_util_fd_t genfd = GRUB_UTIL_FD_INVALID;
 
 #include <grub/time.h>
 
-#if defined (GRUB_MACHINE_EMU) && defined (COLLECT_TIME_STATISTICS)
-#include <sys/times.h>
-#include <unistd.h>
-#endif
-
 static void
 write_time (void)
 {
@@ -498,13 +493,11 @@ write_time (void)
   static grub_uint64_t prev;
   grub_uint64_t cur;
   static grub_util_fd_t tmrfd = GRUB_UTIL_FD_INVALID;
-  struct tms tm;
   if (!GRUB_UTIL_FD_IS_VALID (tmrfd))
     tmrfd = grub_util_fd_open ("time.txt", GRUB_UTIL_FD_O_WRONLY
                               | GRUB_UTIL_FD_O_CREATTRUNC);
 
-  times (&tm); 
-  cur = (tm.tms_utime * 1000ULL) / sysconf(_SC_CLK_TCK);
+  cur = grub_util_get_cpu_time_ms ();
   grub_snprintf (buf, sizeof (buf), "%s_%dx%dx%s:%d: %" PRIuGRUB_UINT64_T " ms\n",
                 basename,                      
                 capt_mode_info.width,
diff --git a/include/grub/emu/export.h b/include/grub/emu/export.h
deleted file mode 100644 (file)
index bdeb10f..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifdef GRUB_SYMBOL_GENERATOR
-void EXPORT_FUNC (sysconf) (void);
-void EXPORT_FUNC (times) (void);
-#else
-#include <sys/times.h>
-#include <unistd.h>
-#endif
index 004ee5bfb4b963fae4bd43b948472752bdec85c6..21b83e87c08e434474e62f6b808469d9dbf469ab 100644 (file)
@@ -50,6 +50,8 @@ void EXPORT_FUNC(grub_util_warn) (const char *fmt, ...) __attribute__ ((format (
 void EXPORT_FUNC(grub_util_info) (const char *fmt, ...) __attribute__ ((format (printf, 1, 2)));
 void EXPORT_FUNC(grub_util_error) (const char *fmt, ...) __attribute__ ((format (printf, 1, 2), noreturn));
 
+grub_uint64_t EXPORT_FUNC (grub_util_get_cpu_time_ms) (void);
+
 extern char * canonicalize_file_name (const char *path);
 
 #ifdef HAVE_DEVICE_MAPPER