summaryrefslogtreecommitdiffhomepage
path: root/pkg/sentry/syscalls/linux/sys_thread.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/sentry/syscalls/linux/sys_thread.go')
-rw-r--r--pkg/sentry/syscalls/linux/sys_thread.go42
1 files changed, 17 insertions, 25 deletions
diff --git a/pkg/sentry/syscalls/linux/sys_thread.go b/pkg/sentry/syscalls/linux/sys_thread.go
index 23c2f7035..cc441460c 100644
--- a/pkg/sentry/syscalls/linux/sys_thread.go
+++ b/pkg/sentry/syscalls/linux/sys_thread.go
@@ -42,14 +42,6 @@ const (
exitSignalMask = 0xff
)
-// Possible values for the idtype argument to waitid(2), defined in Linux's
-// include/uapi/linux/wait.h.
-const (
- _P_ALL = 0
- _P_PID = 1
- _P_PGID = 2
-)
-
// Getppid implements linux syscall getppid(2).
func Getppid(t *kernel.Task, args arch.SyscallArguments) (uintptr, *kernel.SyscallControl, error) {
parent := t.Parent()
@@ -191,7 +183,7 @@ func Vfork(t *kernel.Task, args arch.SyscallArguments) (uintptr, *kernel.Syscall
// wait4 waits for the given child process to exit.
func wait4(t *kernel.Task, pid int, statusAddr usermem.Addr, options int, rusageAddr usermem.Addr) (uintptr, error) {
- if options&^(syscall.WNOHANG|syscall.WUNTRACED|syscall.WCONTINUED|syscall.WALL|syscall.WCLONE) != 0 {
+ if options&^(linux.WNOHANG|linux.WUNTRACED|linux.WCONTINUED|linux.WALL|linux.WCLONE) != 0 {
return 0, syscall.EINVAL
}
wopts := kernel.WaitOptions{
@@ -215,24 +207,24 @@ func wait4(t *kernel.Task, pid int, statusAddr usermem.Addr, options int, rusage
wopts.SpecificTID = kernel.ThreadID(pid)
}
- switch options & (syscall.WCLONE | syscall.WALL) {
+ switch options & (linux.WCLONE | linux.WALL) {
case 0:
wopts.NonCloneTasks = true
- case syscall.WCLONE:
+ case linux.WCLONE:
wopts.CloneTasks = true
- case syscall.WALL:
+ case linux.WALL:
wopts.NonCloneTasks = true
wopts.CloneTasks = true
default:
return 0, syscall.EINVAL
}
- if options&syscall.WUNTRACED != 0 {
+ if options&linux.WUNTRACED != 0 {
wopts.Events |= kernel.EventChildGroupStop
}
- if options&syscall.WCONTINUED != 0 {
+ if options&linux.WCONTINUED != 0 {
wopts.Events |= kernel.EventGroupContinue
}
- if options&syscall.WNOHANG == 0 {
+ if options&linux.WNOHANG == 0 {
wopts.BlockInterruptErr = kernel.ERESTARTSYS
}
@@ -286,36 +278,36 @@ func Waitid(t *kernel.Task, args arch.SyscallArguments) (uintptr, *kernel.Syscal
options := int(args[3].Uint())
rusageAddr := args[4].Pointer()
- if options&^(syscall.WNOHANG|syscall.WEXITED|syscall.WSTOPPED|syscall.WCONTINUED|syscall.WNOWAIT) != 0 {
+ if options&^(linux.WNOHANG|linux.WEXITED|linux.WSTOPPED|linux.WCONTINUED|linux.WNOWAIT) != 0 {
return 0, nil, syscall.EINVAL
}
- if options&(syscall.WEXITED|syscall.WSTOPPED|syscall.WCONTINUED) == 0 {
+ if options&(linux.WEXITED|linux.WSTOPPED|linux.WCONTINUED) == 0 {
return 0, nil, syscall.EINVAL
}
wopts := kernel.WaitOptions{
NonCloneTasks: true,
Events: kernel.EventTraceeStop,
- ConsumeEvent: options&syscall.WNOWAIT == 0,
+ ConsumeEvent: options&linux.WNOWAIT == 0,
}
switch idtype {
- case _P_ALL:
- case _P_PID:
+ case linux.P_ALL:
+ case linux.P_PID:
wopts.SpecificTID = kernel.ThreadID(id)
- case _P_PGID:
+ case linux.P_PGID:
wopts.SpecificPGID = kernel.ProcessGroupID(id)
default:
return 0, nil, syscall.EINVAL
}
- if options&syscall.WEXITED != 0 {
+ if options&linux.WEXITED != 0 {
wopts.Events |= kernel.EventExit
}
- if options&syscall.WSTOPPED != 0 {
+ if options&linux.WSTOPPED != 0 {
wopts.Events |= kernel.EventChildGroupStop
}
- if options&syscall.WCONTINUED != 0 {
+ if options&linux.WCONTINUED != 0 {
wopts.Events |= kernel.EventGroupContinue
}
- if options&syscall.WNOHANG == 0 {
+ if options&linux.WNOHANG == 0 {
wopts.BlockInterruptErr = kernel.ERESTARTSYS
}