[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [UNIKRAFT PATCH 3/5] lib/uktime: Register `gettimeofday` to syscall_shim
Registers `gettimeofday` system call to syscall_shim library. In order to avoid the unused warning for the second parameter, I had to provide all three system call entry functions manually. Signed-off-by: Constantin Raducanu <raducanu.costi@xxxxxxxxx> --- lib/uktime/Makefile.uk | 2 ++ lib/uktime/exportsyms.uk | 2 ++ lib/uktime/time.c | 32 +++++++++++++++++++++++++++----- 3 files changed, 31 insertions(+), 5 deletions(-) diff --git a/lib/uktime/Makefile.uk b/lib/uktime/Makefile.uk index 2976a10..4fdf282 100644 --- a/lib/uktime/Makefile.uk +++ b/lib/uktime/Makefile.uk @@ -12,3 +12,5 @@ LIBUKTIME_SRCS-y += $(LIBUKTIME_BASE)/musl-imported/src/__tm_to_secs.c LIBUKTIME_SRCS-y += $(LIBUKTIME_BASE)/musl-imported/src/__year_to_secs.c LIBUKTIME_SRCS-y += $(LIBUKTIME_BASE)/time.c LIBUKTIME_SRCS-y += $(LIBUKTIME_BASE)/timer.c + +UK_PROVIDED_SYSCALLS-$(CONFIG_LIBUKTIME) += gettimeofday-2 \ No newline at end of file diff --git a/lib/uktime/exportsyms.uk b/lib/uktime/exportsyms.uk index 82b70b7..90ad7f9 100644 --- a/lib/uktime/exportsyms.uk +++ b/lib/uktime/exportsyms.uk @@ -2,6 +2,8 @@ clock_getres clock_gettime clock_settime gettimeofday +uk_syscall_e_gettimeofday +uk_syscall_r_gettimeofday nanosleep setitimer sleep diff --git a/lib/uktime/time.c b/lib/uktime/time.c index 4d3ba53..e45b6f4 100644 --- a/lib/uktime/time.c +++ b/lib/uktime/time.c @@ -43,6 +43,8 @@ #include <uk/plat/time.h> #include <uk/config.h> #include <uk/print.h> +#include <uk/syscall.h> + #if CONFIG_HAVE_SCHED #include <uk/sched.h> #else @@ -125,20 +127,40 @@ unsigned int sleep(unsigned int seconds) return 0; } -int gettimeofday(struct timeval *tv, void *tz __unused) +long uk_syscall_r_gettimeofday(long tv, long tz __unused) { __nsec now = ukplat_wall_clock(); if (!tv) { - errno = EINVAL; - return -1; + return -EINVAL; } - tv->tv_sec = ukarch_time_nsec_to_sec(now); - tv->tv_usec = ukarch_time_nsec_to_usec(ukarch_time_subsec(now)); + ((struct timeval*) tv)->tv_sec = ukarch_time_nsec_to_sec(now); + ((struct timeval*) tv)->tv_usec = + ukarch_time_nsec_to_usec(ukarch_time_subsec(now)); + return 0; } +long uk_syscall_e_gettimeofday(long tv, long tz __unused) +{ + long ret; + + ret = uk_syscall_r_gettimeofday(tv, tz); + if (ret < 0) { + errno = (int) -ret; + return -1; + } + return 0; +} + +#if !UK_LIBC_SYSCALL +int gettimeofday (struct timeval* tv, void* tz __unused) +{ + return uk_syscall_e_gettimeofday((long) tv, (long)tz); +} +#endif + int clock_getres(clockid_t clk_id __unused, struct timespec *res __unused) { return 0; -- 2.17.1
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |