* [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.