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