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)))