From 599a3d0fb4cabbe6c56f4ac34dc9381eee365f52 Mon Sep 17 00:00:00 2001 From: Andrei Vagin Date: Thu, 7 Jan 2021 11:17:43 -0800 Subject: Implement the semtimedop syscall Signed-off-by: Andrei Vagin --- pkg/sentry/syscalls/linux/sys_sem.go | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'pkg/sentry/syscalls/linux/sys_sem.go') diff --git a/pkg/sentry/syscalls/linux/sys_sem.go b/pkg/sentry/syscalls/linux/sys_sem.go index 1166cd7bb..d324461a3 100644 --- a/pkg/sentry/syscalls/linux/sys_sem.go +++ b/pkg/sentry/syscalls/linux/sys_sem.go @@ -48,6 +48,15 @@ func Semget(t *kernel.Task, args arch.SyscallArguments) (uintptr, *kernel.Syscal return uintptr(set.ID), nil, nil } +// Semtimedop handles: semop(int semid, struct sembuf *sops, size_t nsops, const struct timespec *timeout) +func Semtimedop(t *kernel.Task, args arch.SyscallArguments) (uintptr, *kernel.SyscallControl, error) { + // TODO(gvisor.dev/issue/137): A non-zero timeout isn't supported. + if args[3].Pointer() != 0 { + return 0, nil, syserror.ENOSYS + } + return Semop(t, args) +} + // Semop handles: semop(int semid, struct sembuf *sops, size_t nsops) func Semop(t *kernel.Task, args arch.SyscallArguments) (uintptr, *kernel.SyscallControl, error) { id := args[0].Int() -- cgit v1.2.3