From b90fb1e96b2c3edd2fb9e8884e64944692d5dd7f Mon Sep 17 00:00:00 2001 From: daurnimator Date: Wed, 4 Nov 2020 22:30:47 +1100 Subject: [PATCH] std: add PR enum for the prctl opcode --- lib/std/os.zig | 4 +- lib/std/os/bits/linux/prctl.zig | 82 +++++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+), 2 deletions(-) diff --git a/lib/std/os.zig b/lib/std/os.zig index 50b0b9b6fd..b3339bc161 100644 --- a/lib/std/os.zig +++ b/lib/std/os.zig @@ -5636,7 +5636,7 @@ pub const PrctlError = error{ PermissionDenied, } || UnexpectedError; -pub fn prctl(option: i32, args: anytype) PrctlError!u31 { +pub fn prctl(option: PR, args: anytype) PrctlError!u31 { if (@typeInfo(@TypeOf(args)) != .Struct) @compileError("Expected tuple or struct argument, found " ++ @typeName(@TypeOf(args))); if (args.len > 4) @@ -5648,7 +5648,7 @@ pub fn prctl(option: i32, args: anytype) PrctlError!u31 { inline while (i < args.len) : (i += 1) buf[i] = args[i]; } - const rc = system.prctl(option, buf[0], buf[1], buf[2], buf[3]); + const rc = system.prctl(@enumToInt(option), buf[0], buf[1], buf[2], buf[3]); switch (errno(rc)) { 0 => return @intCast(u31, rc), EACCES => return error.AccessDenied, diff --git a/lib/std/os/bits/linux/prctl.zig b/lib/std/os/bits/linux/prctl.zig index 7fa9969af4..22a72ff14a 100644 --- a/lib/std/os/bits/linux/prctl.zig +++ b/lib/std/os/bits/linux/prctl.zig @@ -4,6 +4,88 @@ // The MIT license requires this copyright notice to be included in all copies // and substantial portions of the software. +pub const PR = extern enum(i32) { + SET_PDEATHSIG = 1, + GET_PDEATHSIG = 2, + + GET_DUMPABLE = 3, + SET_DUMPABLE = 4, + + GET_UNALIGN = 5, + SET_UNALIGN = 6, + + GET_KEEPCAPS = 7, + SET_KEEPCAPS = 8, + + GET_FPEMU = 9, + SET_FPEMU = 10, + + GET_FPEXC = 11, + SET_FPEXC = 12, + + GET_TIMING = 13, + SET_TIMING = 14, + + SET_NAME = 15, + GET_NAME = 16, + + GET_ENDIAN = 19, + SET_ENDIAN = 20, + + GET_SECCOMP = 21, + SET_SECCOMP = 22, + + CAPBSET_READ = 23, + CAPBSET_DROP = 24, + + GET_TSC = 25, + SET_TSC = 26, + + GET_SECUREBITS = 27, + SET_SECUREBITS = 28, + + SET_TIMERSLACK = 29, + GET_TIMERSLACK = 30, + + TASK_PERF_EVENTS_DISABLE = 31, + TASK_PERF_EVENTS_ENABLE = 32, + + MCE_KILL = 33, + + MCE_KILL_GET = 34, + + SET_MM = 35, + + SET_PTRACER = 0x59616d61, + + SET_CHILD_SUBREAPER = 36, + GET_CHILD_SUBREAPER = 37, + + SET_NO_NEW_PRIVS = 38, + GET_NO_NEW_PRIVS = 39, + + GET_TID_ADDRESS = 40, + + SET_THP_DISABLE = 41, + GET_THP_DISABLE = 42, + + MPX_ENABLE_MANAGEMENT = 43, + MPX_DISABLE_MANAGEMENT = 44, + + SET_FP_MODE = 45, + GET_FP_MODE = 46, + + CAP_AMBIENT = 47, + + SVE_SET_VL = 50, + SVE_GET_VL = 51, + + GET_SPECULATION_CTRL = 52, + SET_SPECULATION_CTRL = 53, + + _, +}; + pub const PR_SET_PDEATHSIG = 1; pub const PR_GET_PDEATHSIG = 2;