prctl - Man Page
operations on a process or thread
Library
Standard C library (libc, -lc)
Synopsis
#include <linux/prctl.h> /* Definition of PR_* constants */ #include <sys/prctl.h> int prctl(int op, ...);
Description
prctl() manipulates various aspects of the behavior of the calling thread or process.
prctl() is called with a first argument describing what to do, and further arguments with a significance depending on the first one. The first argument can be:
PR_CAP_AMBIENT
PR_CAPBSET_READ
PR_CAPBSET_DROP
PR_SET_CHILD_SUBREAPER
PR_GET_CHILD_SUBREAPER
PR_SET_DUMPABLE
PR_GET_DUMPABLE
PR_SET_ENDIAN
PR_GET_ENDIAN
PR_SET_FP_MODE
PR_GET_FP_MODE
PR_SET_FPEMU
PR_GET_FPEMU
PR_SET_FPEXC
PR_GET_FPEXC
PR_SET_IO_FLUSHER
PR_GET_IO_FLUSHER
PR_SET_KEEPCAPS
PR_GET_KEEPCAPS
PR_MCE_KILL
PR_MCE_KILL_GET
PR_SET_MM
PR_SET_VMA
PR_MPX_ENABLE_MANAGEMENT
PR_MPX_DISABLE_MANAGEMENT
PR_SET_NAME
PR_GET_NAME
PR_SET_NO_NEW_PRIVS
PR_GET_NO_NEW_PRIVS
PR_PAC_RESET_KEYS
PR_SET_PDEATHSIG
PR_GET_PDEATHSIG
PR_SET_PTRACER
PR_SET_SECCOMP
PR_GET_SECCOMP
PR_SET_SECUREBITS
PR_GET_SECUREBITS
PR_GET_SPECULATION_CTRL
PR_SET_SPECULATION_CTRL
PR_SVE_SET_VL
PR_SVE_GET_VL
PR_SET_SYSCALL_USER_DISPATCH
PR_SET_TAGGED_ADDR_CTRL
PR_GET_TAGGED_ADDR_CTRL
PR_TASK_PERF_EVENTS_DISABLE
PR_TASK_PERF_EVENTS_ENABLE
PR_SET_THP_DISABLE
PR_GET_THP_DISABLE
PR_GET_TID_ADDRESS
PR_SET_TIMERSLACK
PR_GET_TIMERSLACK
PR_SET_TIMING
PR_GET_TIMING
PR_SET_TSC
PR_GET_TSC
PR_SET_UNALIGN
PR_GET_UNALIGN
PR_GET_AUXV
PR_SET_MDWE
PR_GET_MDWE
Return Value
On success, a nonnegative value is returned. On error, -1 is returned, and errno is set to indicate the error.
Errors
- EINVAL
The value of op is not recognized, or not supported on this system.
- EINVAL
An unused argument is nonzero.
Versions
IRIX has a prctl() system call (also introduced in Linux 2.1.44 as irix_prctl on the MIPS architecture), with prototype
ptrdiff_t prctl(int op, int arg2, int arg3);
and operations to get the maximum number of processes per user, get the maximum number of processors the calling process can use, find out whether a specified process is currently blocked, get or set the maximum stack size, and so on.
Standards
Linux.
History
Linux 2.1.57, glibc 2.0.6
Caveats
The prototype of the libc wrapper uses a variadic argument list. This makes it necessary to pass the arguments with the right width. When passing numeric constants, such as 0, use a suffix: 0L.
Careless use of some prctl() operations can confuse the user-space run-time environment, so these operations should be used with care.
See Also
signal(2), PR_CAP_AMBIENT(2const), PR_CAPBSET_READ(2const), PR_CAPBSET_DROP(2const), PR_SET_CHILD_SUBREAPER(2const), PR_GET_CHILD_SUBREAPER(2const), PR_SET_DUMPABLE(2const), PR_GET_DUMPABLE(2const), PR_SET_ENDIAN(2const), PR_GET_ENDIAN(2const), PR_SET_FP_MODE(2const), PR_GET_FP_MODE(2const), PR_SET_FPEMU(2const), PR_GET_FPEMU(2const), PR_SET_FPEXC(2const), PR_GET_FPEXC(2const), PR_SET_IO_FLUSHER(2const), PR_GET_IO_FLUSHER(2const), PR_SET_KEEPCAPS(2const), PR_GET_KEEPCAPS(2const), PR_MCE_KILL(2const), PR_MCE_KILL_GET(2const), PR_SET_MM(2const), PR_SET_VMA(2const), PR_MPX_ENABLE_MANAGEMENT(2const), PR_MPX_DISABLE_MANAGEMENT(2const), PR_SET_NAME(2const), PR_GET_NAME(2const), PR_SET_NO_NEW_PRIVS(2const), PR_GET_NO_NEW_PRIVS(2const), PR_PAC_RESET_KEYS(2const), PR_SET_PDEATHSIG(2const), PR_GET_PDEATHSIG(2const), PR_SET_PTRACER(2const), PR_SET_SECCOMP(2const), PR_GET_SECCOMP(2const), PR_SET_SECUREBITS(2const), PR_GET_SECUREBITS(2const), PR_SET_SPECULATION_CTRL(2const), PR_GET_SPECULATION_CTRL(2const), PR_SVE_SET_VL(2const), PR_SVE_GET_VL(2const), PR_SET_SYSCALL_USER_DISPATCH(2const), PR_SET_TAGGED_ADDR_CTRL(2const), PR_GET_TAGGED_ADDR_CTRL(2const), PR_TASK_PERF_EVENTS_DISABLE(2const), PR_TASK_PERF_EVENTS_ENABLE(2const), PR_SET_THP_DISABLE(2const), PR_GET_THP_DISABLE(2const), PR_GET_TID_ADDRESS(2const), PR_SET_TIMERSLACK(2const), PR_GET_TIMERSLACK(2const), PR_SET_TIMING(2const), PR_GET_TIMING(2const), PR_SET_TSC(2const), PR_GET_TSC(2const), PR_SET_UNALIGN(2const), PR_GET_UNALIGN(2const), PR_GET_AUXV(2const), PR_SET_MDWE(2const), PR_GET_MDWE(2const), core(5)
Referenced By
arch_prctl(2), capabilities(7), capng_change_id(3), capng_lock(3), capsh(1), ch-run(1), core(5), credentials(7), environ(7), execve(2), _exit(2), exit(3), fork(2), getpid(2), lttng-ust(3), madvise(2), mount.fuse3(8), nbdkit-captive(1), perf_event_open(2), perl5140delta(1), perlvar(1), pid_namespaces(7), procenv(1), proc_pid(5), proc_pid_cmdline(5), proc_pid_comm(5), proc_pid_environ(5), proc_pid_maps(5), proc_pid_seccomp(5), proc_pid_status(5), proc_pid_timerslack_ns(5), proc_sys_fs(5), proc_sys_vm(5), pthread_setname_np(3), ptrace(2), sd_event_add_time(3), seccomp(2), seccomp_unotify(2), setpriv(1), stress-ng(1), syscalls(2), systemd.exec(5), systemd-nspawn(1), systemd-system.conf(5), systemd.timer(5), time(7), user_namespaces(7), wait(2).