/** * D header file for GNU/Linux. * * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Authors: Arun Chandrasekaran */ module core.sys.linux.sys.prctl; version (linux): extern (C): @system: @nogc: nothrow: enum: uint { PR_SET_PDEATHSIG = 1, PR_GET_PDEATHSIG = 2, PR_GET_DUMPABLE = 3, PR_SET_DUMPABLE = 4, PR_GET_UNALIGN = 5, PR_SET_UNALIGN = 6, PR_UNALIGN_NOPRINT = 1, PR_UNALIGN_SIGBUS = 2, PR_GET_KEEPCAPS = 7, PR_SET_KEEPCAPS = 8, PR_GET_FPEMU = 9, PR_SET_FPEMU = 10, PR_FPEMU_NOPRINT = 1, PR_FPEMU_SIGFPE = 2, PR_GET_FPEXC = 11, PR_SET_FPEXC = 12, PR_FP_EXC_SW_ENABLE = 0x80, PR_FP_EXC_DIV = 0x010000, PR_FP_EXC_OVF = 0x020000, PR_FP_EXC_UND = 0x040000, PR_FP_EXC_RES = 0x080000, PR_FP_EXC_INV = 0x100000, PR_FP_EXC_DISABLED = 0, PR_FP_EXC_NONRECOV = 1, PR_FP_EXC_ASYNC = 2, PR_FP_EXC_PRECISE = 3, PR_GET_TIMING = 13, PR_SET_TIMING = 14, PR_TIMING_STATISTICAL = 0, PR_TIMING_TIMESTAMP = 1, PR_SET_NAME = 15, PR_GET_NAME = 16, PR_GET_ENDIAN = 19, PR_SET_ENDIAN = 20, PR_ENDIAN_BIG = 0, PR_ENDIAN_LITTLE = 1, PR_ENDIAN_PPC_LITTLE = 2, PR_GET_SECCOMP = 21, PR_SET_SECCOMP = 22, PR_CAPBSET_READ = 23, PR_CAPBSET_DROP = 24, PR_GET_TSC = 25, PR_SET_TSC = 26, PR_TSC_ENABLE = 1, PR_TSC_SIGSEGV = 2, PR_GET_SECUREBITS = 27, PR_SET_SECUREBITS = 28, PR_SET_TIMERSLACK = 29, PR_GET_TIMERSLACK = 30, PR_TASK_PERF_EVENTS_DISABLE = 31, PR_TASK_PERF_EVENTS_ENABLE = 32, PR_MCE_KILL = 33, PR_MCE_KILL_CLEAR = 0, PR_MCE_KILL_SET = 1, PR_MCE_KILL_LATE = 0, PR_MCE_KILL_EARLY = 1, PR_MCE_KILL_DEFAULT = 2, PR_MCE_KILL_GET = 34, PR_SET_MM = 35, PR_SET_MM_START_CODE = 1, PR_SET_MM_END_CODE = 2, PR_SET_MM_START_DATA = 3, PR_SET_MM_END_DATA = 4, PR_SET_MM_START_STACK = 5, PR_SET_MM_START_BRK = 6, PR_SET_MM_BRK = 7, PR_SET_MM_ARG_START = 8, PR_SET_MM_ARG_END = 9, PR_SET_MM_ENV_START = 10, PR_SET_MM_ENV_END = 11, PR_SET_MM_AUXV = 12, PR_SET_MM_EXE_FILE = 13, PR_SET_MM_MAP = 14, PR_SET_MM_MAP_SIZE = 15, PR_SET_PTRACER = 0x59616d61, PR_SET_PTRACER_ANY = (cast (uint)-1), PR_SET_CHILD_SUBREAPER = 36, PR_GET_CHILD_SUBREAPER = 37, PR_SET_NO_NEW_PRIVS = 38, PR_GET_NO_NEW_PRIVS = 39, PR_GET_TID_ADDRESS = 40, PR_SET_THP_DISABLE = 41, PR_GET_THP_DISABLE = 42, } struct prctl_mm_map { ulong start_code; ulong end_code; ulong start_data; ulong end_data; ulong start_brk; ulong brk; ulong start_stack; ulong arg_start; ulong arg_end; ulong env_start; ulong env_end; ulong* auxv; uint auxv_size; uint exe_fd; } int prctl(int option, size_t arg2, size_t arg3, size_t arg4, size_t arg5); // // Example usage to set and get the task name. // // byte[16] oldname = cast(byte[]) "1234567890123456"; // oldname[oldname.length-1] = 0; // prctl(PR_SET_NAME, cast(size_t) oldname.ptr, cast(size_t) null, cast(size_t) null, cast(size_t) null); // byte[16] newname; // prctl(PR_GET_NAME, cast(size_t) newname.ptr, cast(size_t) null, cast(size_t) null, cast(size_t) null); // int i; // foreach (b; newname) // { // assert(b == oldname[i]); // i++; // } // writeln(cast(string) newname);