authorgravatar for aydin@mercan.devAydin Mercan <aydin@mercan.dev> 2021-08-21 18:35:07+03:00
committergravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2021-08-21 19:41:00+03:00
loge3e6df17ed93db3ca53983d6149249746594e11c
tree12dd996ab20a5a10eb9e41d1dabdd756809d6d2f
parent724995e892acd9d2981b55847f2ccb85af923d6b

linux: Add recent clone/clone3 and missing signalfd flags.

The following flags have been introduced: - CLONE_PIDFD (>=5.2) - CLONE_INTO_CGROUP (>=5.7) - SFD_CLOEXEC and SFD_NONBLOCK (>=2.6.27)

1 files changed, 6 insertions(+), 0 deletions(-)

lib/std/os/bits/linux.zig+6
...@@ -887,6 +887,7 @@ pub const CLONE_VM = 0x00000100;...@@ -887,6 +887,7 @@ pub const CLONE_VM = 0x00000100;
887pub const CLONE_FS = 0x00000200;887pub const CLONE_FS = 0x00000200;
888pub const CLONE_FILES = 0x00000400;888pub const CLONE_FILES = 0x00000400;
889pub const CLONE_SIGHAND = 0x00000800;889pub const CLONE_SIGHAND = 0x00000800;
890pub const CLONE_PIDFD = 0x00001000;
890pub const CLONE_PTRACE = 0x00002000;891pub const CLONE_PTRACE = 0x00002000;
891pub const CLONE_VFORK = 0x00004000;892pub const CLONE_VFORK = 0x00004000;
892pub const CLONE_PARENT = 0x00008000;893pub const CLONE_PARENT = 0x00008000;
...@@ -911,6 +912,8 @@ pub const CLONE_IO = 0x80000000;...@@ -911,6 +912,8 @@ pub const CLONE_IO = 0x80000000;
911912
912/// Clear any signal handler and reset to SIG_DFL.913/// Clear any signal handler and reset to SIG_DFL.
913pub const CLONE_CLEAR_SIGHAND = 0x100000000;914pub const CLONE_CLEAR_SIGHAND = 0x100000000;
915/// Clone into a specific cgroup given the right permissions.
916pub const CLONE_INTO_CGROUP = 0x200000000;
914917
915// cloning flags intersect with CSIGNAL so can be used with unshare and clone3 syscalls only.918// cloning flags intersect with CSIGNAL so can be used with unshare and clone3 syscalls only.
916919
...@@ -1131,6 +1134,9 @@ pub const SIG_IGN = @intToPtr(?Sigaction.sigaction_fn, 1);...@@ -1131,6 +1134,9 @@ pub const SIG_IGN = @intToPtr(?Sigaction.sigaction_fn, 1);
11311134
1132pub const empty_sigset = [_]u32{0} ** @typeInfo(sigset_t).Array.len;1135pub const empty_sigset = [_]u32{0} ** @typeInfo(sigset_t).Array.len;
11331136
1137pub const SFD_CLOEXEC = O_CLOEXEC;
1138pub const SFD_NONBLOCK = O_NONBLOCK;
1139
1134pub const signalfd_siginfo = extern struct {1140pub const signalfd_siginfo = extern struct {
1135 signo: u32,1141 signo: u32,
1136 errno: i32,1142 errno: i32,