* [PATCH] use grub_get_time_ms() instead of grub_get_rtc()
@ 2008-08-05 23:54 Robert Millan
2008-08-07 23:48 ` Robert Millan
0 siblings, 1 reply; 2+ messages in thread
From: Robert Millan @ 2008-08-05 23:54 UTC (permalink / raw)
To: grub-devel
[-- Attachment #1: Type: text/plain, Size: 427 bytes --]
This replaces usage of grub_get_rtc() with grub_get_time_ms() in a few places
throurough the code. Aside from the gained precision, it also permits that
functionality to work on Coreboot.
--
Robert Millan
The DRM opt-in fallacy: "Your data belongs to us. We will decide when (and
how) you may access your data; but nobody's threatening your freedom: we
still allow you to remove your data and not access it at all."
[-- Attachment #2: get_time_ms.diff --]
[-- Type: text/x-diff, Size: 3581 bytes --]
2008-08-06 Robert Millan <rmh@aybabtu.com>
* kern/disk.c: Replace `<grub/machine/time.h>' with `<grub/time.h>'.
(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 `<grub/machine/time.h>' with `<grub/time.h>'.
(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 <grub/types.h>
#include <grub/partition.h>
#include <grub/misc.h>
-#include <grub/machine/time.h>
+#include <grub/time.h>
#include <grub/file.h>
#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 <grub/misc.h>
#include <grub/loader.h>
#include <grub/mm.h>
-#include <grub/machine/time.h>
+#include <grub/time.h>
#include <grub/env.h>
#include <grub/script.h>
@@ -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 <grub/util/misc.h>
#include <grub/mm.h>
#include <grub/term.h>
+#include <grub/time.h>
#include <grub/machine/time.h>
/* 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)))
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] use grub_get_time_ms() instead of grub_get_rtc()
2008-08-05 23:54 [PATCH] use grub_get_time_ms() instead of grub_get_rtc() Robert Millan
@ 2008-08-07 23:48 ` Robert Millan
0 siblings, 0 replies; 2+ messages in thread
From: Robert Millan @ 2008-08-07 23:48 UTC (permalink / raw)
To: grub-devel
Committed.
On Wed, Aug 06, 2008 at 01:54:50AM +0200, Robert Millan wrote:
>
> This replaces usage of grub_get_rtc() with grub_get_time_ms() in a few places
> throurough the code. Aside from the gained precision, it also permits that
> functionality to work on Coreboot.
>
> --
> Robert Millan
>
> The DRM opt-in fallacy: "Your data belongs to us. We will decide when (and
> how) you may access your data; but nobody's threatening your freedom: we
> still allow you to remove your data and not access it at all."
> 2008-08-06 Robert Millan <rmh@aybabtu.com>
>
> * kern/disk.c: Replace `<grub/machine/time.h>' with `<grub/time.h>'.
> (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 `<grub/machine/time.h>' with `<grub/time.h>'.
> (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 <grub/types.h>
> #include <grub/partition.h>
> #include <grub/misc.h>
> -#include <grub/machine/time.h>
> +#include <grub/time.h>
> #include <grub/file.h>
>
> #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 <grub/misc.h>
> #include <grub/loader.h>
> #include <grub/mm.h>
> -#include <grub/machine/time.h>
> +#include <grub/time.h>
> #include <grub/env.h>
> #include <grub/script.h>
>
> @@ -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 <grub/util/misc.h>
> #include <grub/mm.h>
> #include <grub/term.h>
> +#include <grub/time.h>
> #include <grub/machine/time.h>
>
> /* 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)))
> _______________________________________________
> Grub-devel mailing list
> Grub-devel@gnu.org
> http://lists.gnu.org/mailman/listinfo/grub-devel
--
Robert Millan
The DRM opt-in fallacy: "Your data belongs to us. We will decide when (and
how) you may access your data; but nobody's threatening your freedom: we
still allow you to remove your data and not access it at all."
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2008-08-07 23:49 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-08-05 23:54 [PATCH] use grub_get_time_ms() instead of grub_get_rtc() Robert Millan
2008-08-07 23:48 ` Robert Millan
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.