]> git.proxmox.com Git - grub2.git/commitdiff
Set EFI ticks to 1000Hz simplifying much of the code and avoiding cotsly division
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sun, 8 May 2011 15:05:47 +0000 (17:05 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sun, 8 May 2011 15:05:47 +0000 (17:05 +0200)
grub-core/Makefile.core.def
grub-core/kern/efi/efi.c
include/grub/efi/time.h

index 7bb51adfefd69d89b549800fe445c71b5f2dce8d..bc7ce5fbeffeadf61bbc09a2ff43dce039f5dc4e 100644 (file)
@@ -83,7 +83,6 @@ kernel = {
   noemu_nodist = symlist.c;
 
   i386_pc = kern/generic/rtc_get_time_ms.c;
-  efi = kern/generic/rtc_get_time_ms.c;
   i386_qemu = kern/generic/rtc_get_time_ms.c;
   i386_coreboot = kern/generic/rtc_get_time_ms.c;
   i386_multiboot = kern/generic/rtc_get_time_ms.c;
index fa1d0c730fab85c9e5d1912b7caa002f46e8f246..c950587331d4552549201115a75d0f2e19f3b51b 100644 (file)
@@ -24,6 +24,7 @@
 #include <grub/efi/console_control.h>
 #include <grub/efi/pe32.h>
 #include <grub/machine/time.h>
+#include <grub/time.h>
 #include <grub/term.h>
 #include <grub/kernel.h>
 #include <grub/mm.h>
@@ -193,8 +194,8 @@ grub_efi_set_virtual_address_map (grub_efi_uintn_t memory_map_size,
   return grub_error (GRUB_ERR_IO, "set_virtual_address_map failed");
 }
 
-grub_uint32_t
-grub_get_rtc (void)
+grub_uint64_t
+grub_rtc_get_time_ms (void)
 {
   grub_efi_time_t time;
   grub_efi_runtime_services_t *r;
@@ -204,9 +205,14 @@ grub_get_rtc (void)
     /* What is possible in this case?  */
     return 0;
 
-  return (((time.minute * 60 + time.second) * 1000
-          + time.nanosecond / 1000000)
-         * GRUB_TICKS_PER_SECOND / 1000);
+  return ((time.minute * 60 + time.second) * 1000
+          + time.nanosecond / 1000000);
+}
+
+grub_uint32_t
+grub_get_rtc (void)
+{
+  return grub_rtc_get_time_ms ();
 }
 
 /* Search the mods section from the PE32/PE32+ image. This code uses
index 540f6fc0462f2bc28e014821d4d6175541d357b6..51b3373096322abfc5e6f0e35f0e76cda28739d6 100644 (file)
@@ -21,8 +21,7 @@
 
 #include <grub/symbol.h>
 
-/* This is destined to overflow when one hour passes by.  */
-#define GRUB_TICKS_PER_SECOND  ((1UL << 31) / 60 / 60 * 2)
+#define GRUB_TICKS_PER_SECOND  1000
 
 /* Return the real time in ticks.  */
 grub_uint32_t EXPORT_FUNC (grub_get_rtc) (void);