]> xenbits.xensource.com Git - unikraft/unikraft.git/commitdiff
lib/posix-time: Add clock_nanosleep syscall
authorCostin Sin <sin.costinrobert@gmail.com>
Sat, 13 May 2023 06:48:31 +0000 (06:48 +0000)
committerUnikraft <monkey@unikraft.io>
Mon, 15 May 2023 15:38:10 +0000 (15:38 +0000)
clock_nanosleep syscall should mimic the nanosleep syscall
when the clockid equals CLOCK_REALTIME and the TIMER_ABSTIME flag is
missing.

Signed-off-by: Costin Sin <sin.costinrobert@gmail.com>
Reviewed-by: Stefan Jumarea <stefanjumarea02@gmail.com>
Reviewed-by: Eduard Vintilă <eduard.vintila47@gmail.com>
Approved-by: Razvan Deaconescu <razvand@unikraft.io>
Tested-by: Unikraft CI <monkey@unikraft.io>
GitHub-Closes: #891

lib/posix-time/Makefile.uk
lib/posix-time/exportsyms.uk
lib/posix-time/time.c

index 386254377f9ccc22781d42064b9406f1f028e4d9..4d31dc94849a0b97c6fa742900c8d4d36c69f45c 100644 (file)
@@ -7,9 +7,10 @@ LIBPOSIX_TIME_SRCS-y += $(LIBPOSIX_TIME_BASE)/time.c
 LIBPOSIX_TIME_SRCS-y += $(LIBPOSIX_TIME_BASE)/timer.c
 
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBPOSIX_TIME) += nanosleep-2
+UK_PROVIDED_SYSCALLS-$(CONFIG_LIBPOSIX_TIME) += clock_getres-2
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBPOSIX_TIME) += clock_gettime-2
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBPOSIX_TIME) += clock_settime-2
-UK_PROVIDED_SYSCALLS-$(CONFIG_LIBPOSIX_TIME) += clock_getres-2
+UK_PROVIDED_SYSCALLS-$(CONFIG_LIBPOSIX_TIME) += clock_nanosleep-4
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBPOSIX_TIME) += gettimeofday-2
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBPOSIX_TIME) += times-1
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBPOSIX_TIME) += time-1
index bc802b4b00810412aea778cc59f3499b38e59fc0..eae6fe718e30d9266779894aa87ce6b2835c4010 100644 (file)
@@ -7,6 +7,9 @@ uk_syscall_r_clock_gettime
 clock_settime
 uk_syscall_e_clock_settime
 uk_syscall_r_clock_settime
+clock_nanosleep
+uk_syscall_e_clock_nanosleep
+uk_syscall_r_clock_nanosleep
 gettimeofday
 uk_syscall_e_gettimeofday
 uk_syscall_r_gettimeofday
index 249385d95ec712fd8f9d45bb955dd6271df21028..b6fc71636deca344e9b44eec64270b0c7c331e3f 100644 (file)
@@ -207,6 +207,16 @@ UK_SYSCALL_R_DEFINE(int, clock_settime, clockid_t, clk_id,
        return 0;
 }
 
+UK_SYSCALL_R_DEFINE(int, clock_nanosleep, clockid_t, clockid, int, flags,
+                   const struct timespec *, request, struct timespec *, remain)
+{
+       if ((clockid == CLOCK_REALTIME) && !(flags & TIMER_ABSTIME))
+               return uk_syscall_r_nanosleep((long) request, (long) remain);
+
+       UK_WARN_STUBBED();
+       return 0;
+}
+
 UK_SYSCALL_R_DEFINE(int, times, struct tm *, buf)
 {
        return -ENOTSUP;