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;
887887pub const CLONE_FS = 0x00000200;
888888pub const CLONE_FILES = 0x00000400;
889889pub const CLONE_SIGHAND = 0x00000800;
890pub const CLONE_PIDFD = 0x00001000;
890891pub const CLONE_PTRACE = 0x00002000;
891892pub const CLONE_VFORK = 0x00004000;
892893pub const CLONE_PARENT = 0x00008000;
......@@ -911,6 +912,8 @@ pub const CLONE_IO = 0x80000000;
911912
912913/// Clear any signal handler and reset to SIG_DFL.
913914pub const CLONE_CLEAR_SIGHAND = 0x100000000;
915/// Clone into a specific cgroup given the right permissions.
916pub const CLONE_INTO_CGROUP = 0x200000000;
914917
915918// 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);
11311134
11321135pub const empty_sigset = [_]u32{0} ** @typeInfo(sigset_t).Array.len;
11331136
1137pub const SFD_CLOEXEC = O_CLOEXEC;
1138pub const SFD_NONBLOCK = O_NONBLOCK;
1139
11341140pub const signalfd_siginfo = extern struct {
11351141 signo: u32,
11361142 errno: i32,