All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.