2008-08-06 Robert Millan
* kern/disk.c: Replace `' with `'.
(grub_last_time): Change type to grub_uint64_t.
(grub_disk_open): Migrate code from to using grub_get_time_ms().
(grub_disk_close): Likewise.
* normal/menu.c: Replace `' with `'.
(run_menu): Migrate code from to using grub_get_time_ms().
* util/misc.c (grub_get_time_ms): New function.
Index: kern/disk.c
===================================================================
--- kern/disk.c (revision 1780)
+++ kern/disk.c (working copy)
@@ -22,13 +22,13 @@
#include
#include
#include
-#include
+#include
#include
#define GRUB_CACHE_TIMEOUT 2
/* The last time the disk was used. */
-static unsigned long grub_last_time = 0;
+static grub_uint64_t grub_last_time = 0;
/* Disk cache. */
@@ -215,7 +215,7 @@
grub_disk_t disk;
grub_disk_dev_t dev;
char *raw = (char *) name;
- unsigned long current_time;
+ grub_uint64_t current_time;
grub_dprintf ("disk", "Opening `%s'...\n", name);
@@ -280,10 +280,10 @@
/* The cache will be invalidated about 2 seconds after a device was
closed. */
- current_time = grub_get_rtc ();
+ current_time = grub_get_time_ms ();
if (current_time > (grub_last_time
- + GRUB_CACHE_TIMEOUT * GRUB_TICKS_PER_SECOND))
+ + GRUB_CACHE_TIMEOUT * 1000))
grub_disk_cache_invalidate_all ();
grub_last_time = current_time;
@@ -315,7 +315,7 @@
(disk->dev->close) (disk);
/* Reset the timer. */
- grub_last_time = grub_get_rtc ();
+ grub_last_time = grub_get_time_ms ();
grub_free (disk->partition);
grub_free ((void *) disk->name);
Index: normal/menu.c
===================================================================
--- normal/menu.c (revision 1780)
+++ normal/menu.c (working copy)
@@ -21,7 +21,7 @@
#include
#include
#include
-#include
+#include
#include
#include
@@ -326,7 +326,7 @@
run_menu (grub_menu_t menu, int nested)
{
int first, offset;
- unsigned long saved_time;
+ grub_uint64_t saved_time;
int default_entry;
int timeout;
@@ -351,7 +351,7 @@
}
/* Initialize the time. */
- saved_time = grub_get_rtc ();
+ saved_time = grub_get_time_ms ();
refresh:
grub_setcursor (0);
@@ -371,10 +371,10 @@
if (timeout > 0)
{
- unsigned long current_time;
+ grub_uint64_t current_time;
- current_time = grub_get_rtc ();
- if (current_time - saved_time >= GRUB_TICKS_PER_SECOND)
+ current_time = grub_get_time_ms ();
+ if (current_time - saved_time >= 1000)
{
timeout--;
set_timeout (timeout);
Index: util/misc.c
===================================================================
--- util/misc.c (revision 1780)
+++ util/misc.c (working copy)
@@ -33,6 +33,7 @@
#include
#include
#include
+#include
#include
/* Include malloc.h, only if memalign is available. It is known that
@@ -284,6 +285,16 @@
* GRUB_TICKS_PER_SECOND / 1000000));
}
+grub_uint64_t
+grub_get_time_ms (void)
+{
+ struct timeval tv;
+
+ gettimeofday (&tv, 0);
+
+ return (tv.tv_sec * 1000 + tv.tv_usec / 1000);
+}
+
void
grub_arch_sync_caches (void *address __attribute__ ((unused)),
grub_size_t len __attribute__ ((unused)))