|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Minios-devel] [UNIKRAFT PATCH 6/7] lib/nolibc: Implement gettimeofday()
Signed-off-by: Florian Schmidt <florian.schmidt@xxxxxxxxx>
---
lib/nolibc/exportsyms.uk | 3 +++
lib/nolibc/include/sys/time.h | 1 -
lib/nolibc/time.c | 15 +++++++++++++++
plat/xen/x86/arch_time.c | 19 -------------------
4 files changed, 18 insertions(+), 20 deletions(-)
diff --git a/lib/nolibc/exportsyms.uk b/lib/nolibc/exportsyms.uk
index b2ebb8d6..a26440c9 100644
--- a/lib/nolibc/exportsyms.uk
+++ b/lib/nolibc/exportsyms.uk
@@ -72,6 +72,9 @@ strlcat
# time
nanosleep
+# sys/time
+gettimeofday
+
# ctype
_nolibc_ctype
diff --git a/lib/nolibc/include/sys/time.h b/lib/nolibc/include/sys/time.h
index e08fa85e..d2c8904d 100644
--- a/lib/nolibc/include/sys/time.h
+++ b/lib/nolibc/include/sys/time.h
@@ -52,7 +52,6 @@ struct itimerval {
struct timeval it_value;
};
-/* TODO: Implement */
int gettimeofday(struct timeval *tv, void *tz);
#ifdef __cplusplus
diff --git a/lib/nolibc/time.c b/lib/nolibc/time.c
index 78b1b4b7..b15d7e0d 100644
--- a/lib/nolibc/time.c
+++ b/lib/nolibc/time.c
@@ -44,6 +44,7 @@
#else
#include <uk/plat/lcpu.h>
#endif
+#include <uk/essentials.h>
#ifndef CONFIG_HAVE_SCHED
/* Workaround until Unikraft changes interface for something more
@@ -90,3 +91,17 @@ int nanosleep(const struct timespec *req, struct timespec
*rem)
}
return 0;
}
+
+int gettimeofday(struct timeval *tv, void *tz __unused)
+{
+ __nsec now = ukplat_wall_clock();
+
+ if (!tv) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ tv->tv_sec = ukarch_time_nsec_to_sec(now);
+ tv->tv_usec = ukarch_time_nsec_to_usec(ukarch_time_subsec(now));
+ return 0;
+}
diff --git a/plat/xen/x86/arch_time.c b/plat/xen/x86/arch_time.c
index d36f9632..c6b8d02d 100644
--- a/plat/xen/x86/arch_time.c
+++ b/plat/xen/x86/arch_time.c
@@ -209,25 +209,6 @@ __nsec ukplat_wall_clock(void)
return ret;
}
-#if 0 /* TODO */
-int gettimeofday(struct timeval *tv, void *tz)
-{
- uint64_t nsec = monotonic_clock();
-
- if (!wc_values_up_to_date())
- update_wallclock();
-
- nsec += shadow_ts.tv_nsec;
-
- tv->tv_sec = shadow_ts.tv_sec;
- tv->tv_sec += NSEC_TO_SEC(nsec);
- tv->tv_usec = NSEC_TO_USEC(nsec % 1000000000UL);
-
- return 0;
-}
-#endif
-
-
void time_block_until(__snsec until)
{
UK_ASSERT(irqs_disabled());
--
2.20.1
_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |