All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] minios: make time interface POSIX
@ 2008-01-18 18:10 Samuel Thibault
  0 siblings, 0 replies; only message in thread
From: Samuel Thibault @ 2008-01-18 18:10 UTC (permalink / raw)
  To: xen-devel

minios: make time interface POSIX
timespec uses tv_sec and tv_nsec too. gettimeofday takes a tz argument.

Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>

diff -r 538a343f8e38 extras/mini-os/arch/ia64/time.c
--- a/extras/mini-os/arch/ia64/time.c	Fri Jan 18 16:43:44 2008 +0000
+++ b/extras/mini-os/arch/ia64/time.c	Fri Jan 18 18:01:42 2008 +0000
@@ -147,10 +147,10 @@ calculate_time(void)
 		new = itc_new - itc_alt;
 	itc_alt = itc_new;
 	new = ns_from_cycles(new);
-	os_time.ts_nsec += new;
-	if (os_time.ts_nsec > 1000000000) {	/* On overflow. */
-		os_time.ts_sec++;
-		os_time.ts_nsec -= 1000000000;
+	os_time.tv_nsec += new;
+	if (os_time.tv_nsec > 1000000000) {	/* On overflow. */
+		os_time.tv_sec++;
+		os_time.tv_nsec -= 1000000000;
 	}
 }
 
@@ -177,12 +177,13 @@ monotonic_clock(void)
 	return delta;
 }
 
-void
-gettimeofday(struct timeval *tv)
+int
+gettimeofday(struct timeval *tv, void *tz)
 {
 	calculate_time();
-	tv->tv_sec = os_time.ts_sec;			/* seconds */
-	tv->tv_usec = NSEC_TO_USEC(os_time.ts_nsec);	/* microseconds */
+	tv->tv_sec = os_time.tv_sec;			/* seconds */
+	tv->tv_usec = NSEC_TO_USEC(os_time.tv_nsec);	/* microseconds */
+        return 0;
 };
 
 /*
@@ -253,16 +254,16 @@ init_time(void)
 	itm_val = (itc_frequency + HZ/2) / HZ;
 	printk("  itm_val: %ld\n", itm_val);
 
-	os_time.ts_sec = 0;
-	os_time.ts_nsec = 0;
+	os_time.tv_sec = 0;
+	os_time.tv_nsec = 0;
 
 	if (efi_get_time(&tm)) {
 		printk("  EFI-Time: %d.%d.%d   %d:%d:%d\n", tm.Day,
 		       tm.Month, tm.Year, tm.Hour, tm.Minute, tm.Second);
-		os_time.ts_sec = mktime(SWAP(tm.Year), SWAP(tm.Month),
+		os_time.tv_sec = mktime(SWAP(tm.Year), SWAP(tm.Month),
 					SWAP(tm.Day), SWAP(tm.Hour),
 					SWAP(tm.Minute), SWAP(tm.Second));
-		os_time.ts_nsec = tm.Nanosecond;
+		os_time.tv_nsec = tm.Nanosecond;
 	} else
 		printk("efi_get_time() failed\n");
 
diff -r 538a343f8e38 extras/mini-os/arch/x86/time.c
--- a/extras/mini-os/arch/x86/time.c	Fri Jan 18 16:43:44 2008 +0000
+++ b/extras/mini-os/arch/x86/time.c	Fri Jan 18 18:01:42 2008 +0000
@@ -175,30 +175,32 @@ static void update_wallclock(void)
 	do {
 		shadow_ts_version = s->wc_version;
 		rmb();
-		shadow_ts.ts_sec  = s->wc_sec;
-		shadow_ts.ts_nsec = s->wc_nsec;
+		shadow_ts.tv_sec  = s->wc_sec;
+		shadow_ts.tv_nsec = s->wc_nsec;
 		rmb();
 	}
 	while ((s->wc_version & 1) | (shadow_ts_version ^ s->wc_version));
 }
 
 
-void gettimeofday(struct timeval *tv)
+int gettimeofday(struct timeval *tv, void *tz)
 {
     u64 nsec = monotonic_clock();
-    nsec += shadow_ts.ts_nsec;
+    nsec += shadow_ts.tv_nsec;
     
     
-    tv->tv_sec = shadow_ts.ts_sec;
+    tv->tv_sec = shadow_ts.tv_sec;
     tv->tv_sec += NSEC_TO_SEC(nsec);
     tv->tv_usec = NSEC_TO_USEC(nsec % 1000000000UL);
+
+    return 0;
 }
 
 
 void block_domain(s_time_t until)
 {
     struct timeval tv;
-    gettimeofday(&tv);
+    gettimeofday(&tv, NULL);
     if(monotonic_clock() < until)
     {
         HYPERVISOR_set_timer_op(until);
diff -r 538a343f8e38 extras/mini-os/include/time.h
--- a/extras/mini-os/include/time.h	Fri Jan 18 16:43:44 2008 +0000
+++ b/extras/mini-os/include/time.h	Fri Jan 18 18:01:42 2008 +0000
@@ -38,20 +38,13 @@ typedef s64 s_time_t;
 #define Time_Max                ((s_time_t) 0x7fffffffffffffffLL)
 #define FOREVER                 Time_Max
 #define NSEC_TO_USEC(_nsec)     ((_nsec) / 1000UL)
+#define NSEC_TO_MSEC(_nsec)     ((_nsec) / 1000000ULL)
 #define NSEC_TO_SEC(_nsec)      ((_nsec) / 1000000000ULL)
 
 /* wall clock time  */
 typedef long time_t;
 typedef long suseconds_t;
-struct timeval {
-	time_t		tv_sec;		/* seconds */
-	suseconds_t	tv_usec;	/* microseconds */
-};
-
-struct timespec {
-    time_t      ts_sec;
-    long        ts_nsec;
-};
+#include <sys/time.h>
 
 
 /* prototypes */
@@ -59,7 +52,6 @@ s_time_t get_s_time(void);
 s_time_t get_s_time(void);
 s_time_t get_v_time(void);
 u64      monotonic_clock(void);
-void     gettimeofday(struct timeval *tv);
 void     block_domain(s_time_t until);
 
 #endif /* _TIME_H_ */
diff -r 538a343f8e38 extras/mini-os/kernel.c
--- a/extras/mini-os/kernel.c	Fri Jan 18 16:43:44 2008 +0000
+++ b/extras/mini-os/kernel.c	Fri Jan 18 18:01:42 2008 +0000
@@ -75,7 +75,7 @@ static void periodic_thread(void *p)
     printk("Periodic thread started.\n");
     for(;;)
     {
-        gettimeofday(&tv);
+        gettimeofday(&tv, NULL);
         printk("T(s=%ld us=%ld)\n", tv.tv_sec, tv.tv_usec);
         sleep(1000);
     }
diff -r 538a343f8e38 extras/mini-os/sched.c
--- a/extras/mini-os/sched.c	Fri Jan 18 16:43:44 2008 +0000
+++ b/extras/mini-os/sched.c	Fri Jan 18 18:01:42 2008 +0000
@@ -270,10 +270,10 @@ void th_f1(void *data)
         up(&mutex);
         
         
-        gettimeofday(&tv1);
+        gettimeofday(&tv1, NULL);
         for(;;)
         {
-            gettimeofday(&tv2);
+            gettimeofday(&tv2, NULL);
             if(tv2.tv_sec - tv1.tv_sec > 2) break;
         }
                 
diff -r 538a343f8e38 extras/mini-os/include/sys/time.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/extras/mini-os/include/sys/time.h	Fri Jan 18 18:03:29 2008 +0000
@@ -0,0 +1,38 @@
+/* -*-  Mode:C; c-basic-offset:4; tab-width:4 -*-
+ ****************************************************************************
+ * (C) 2003 - Rolf Neugebauer - Intel Research Cambridge
+ * (C) 2005 - Grzegorz Milos - Intel Research Cambridge
+ ****************************************************************************
+ *
+ *        File: time.h
+ *      Author: Rolf Neugebauer (neugebar@dcs.gla.ac.uk)
+ *     Changes: Grzegorz Milos (gm281@cam.ac.uk)
+ *              Robert Kaiser (kaiser@informatik.fh-wiesbaden.de)
+ *              
+ *        Date: Jul 2003, changes: Jun 2005, Sep 2006
+ * 
+ * Environment: Xen Minimal OS
+ * Description: Time and timer functions
+ *
+ ****************************************************************************
+ */
+
+#ifndef _MINIOS_SYS_TIME_H_
+#define _MINIOS_SYS_TIME_H_
+
+struct timespec {
+    time_t      tv_sec;
+    long        tv_nsec;
+};
+
+struct timezone {
+};
+
+struct timeval {
+	time_t		tv_sec;		/* seconds */
+	suseconds_t	tv_usec;	/* microseconds */
+};
+
+int      gettimeofday(struct timeval *tv, void *tz);
+
+#endif /* _MINIOS_SYS_TIME_H_ */

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2008-01-18 18:10 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-01-18 18:10 [PATCH] minios: make time interface POSIX Samuel Thibault

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.