[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [UNIKRAFT PATCH 4/5] lib/uktime: Register `clock_gettime` to syscall_shim
Registers `clock_gettime` system call to syscall_shim library. Signed-off-by: Constantin Raducanu <raducanu.costi@xxxxxxxxx> --- lib/uktime/Makefile.uk | 3 ++- lib/uktime/exportsyms.uk | 2 ++ lib/uktime/time.c | 15 ++++++++++----- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/lib/uktime/Makefile.uk b/lib/uktime/Makefile.uk index 4fdf282..fa29f72 100644 --- a/lib/uktime/Makefile.uk +++ b/lib/uktime/Makefile.uk @@ -13,4 +13,5 @@ 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 +UK_PROVIDED_SYSCALLS-$(CONFIG_LIBUKTIME) += gettimeofday-2 +UK_PROVIDED_SYSCALLS-$(CONFIG_LIBUKTIME) += clock_gettime-2 \ No newline at end of file diff --git a/lib/uktime/exportsyms.uk b/lib/uktime/exportsyms.uk index 90ad7f9..a79034a 100644 --- a/lib/uktime/exportsyms.uk +++ b/lib/uktime/exportsyms.uk @@ -1,5 +1,7 @@ clock_getres clock_gettime +uk_syscall_e_clock_gettime +uk_syscall_r_clock_gettime clock_settime gettimeofday uk_syscall_e_gettimeofday diff --git a/lib/uktime/time.c b/lib/uktime/time.c index e45b6f4..2f1ee84 100644 --- a/lib/uktime/time.c +++ b/lib/uktime/time.c @@ -166,30 +166,35 @@ int clock_getres(clockid_t clk_id __unused, struct timespec *res __unused) return 0; } -int clock_gettime(clockid_t clk_id __unused, struct timespec *tp __unused) +UK_SYSCALL_R_DEFINE(int, clock_gettime, clockid_t, clk_id, struct timespec*, tp) { __nsec now; + int error; if (!tp) { - errno = EFAULT; - return -1; + error = EFAULT; + goto out_error; } switch (clk_id) { case CLOCK_MONOTONIC: + case CLOCK_MONOTONIC_COARSE: now = ukplat_monotonic_clock(); break; case CLOCK_REALTIME: now = ukplat_wall_clock(); break; default: - errno = EINVAL; - return -1; + error = EINVAL; + goto out_error; } tp->tv_sec = ukarch_time_nsec_to_sec(now); tp->tv_nsec = ukarch_time_subsec(now); return 0; + +out_error: + return -error; } int clock_settime(clockid_t clk_id __unused, const struct timespec *tp __unused) -- 2.17.1
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |