prctl(2) — Linux manual page
prctl(2) System Calls Manual prctl(2)
NAME
prctl - 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)
COLOPHON
This page is part of the man-pages (Linux kernel and C library
user-space interface documentation) project. Information about
the project can be found at
⟨https://www.kernel.org/doc/man-pages/⟩. If you have a bug report
for this manual page, see
⟨https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/CONTRIBUTING⟩.
This page was obtained from the tarball man-pages-6.9.1.tar.gz
fetched from
⟨https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/⟩ on
2024-06-26. If you discover any rendering problems in this HTML
version of the page, or you believe there is a better or more up-
to-date source for the page, or you have corrections or
improvements to the information in this COLOPHON (which is not
part of the original manual page), send a mail to
man-pages@man7.org
Linux man-pages 6.9.1 2024-06-01 prctl(2)
Pages that refer to this page: capsh(1), setpriv(1), systemd-nspawn(1), arch_prctl(2), execve(2), _exit(2), fork(2), getpid(2), madvise(2), perf_event_open(2), PR_CAP_AMBIENT(2const), PR_CAP_AMBIENT_CLEAR_ALL(2const), PR_CAP_AMBIENT_IS_SET(2const), PR_CAP_AMBIENT_LOWER(2const), PR_CAP_AMBIENT_RAISE(2const), PR_CAPBSET_DROP(2const), PR_CAPBSET_READ(2const), PR_GET_AUXV(2const), PR_GET_CHILD_SUBREAPER(2const), PR_GET_DUMPABLE(2const), PR_GET_ENDIAN(2const), PR_GET_FPEMU(2const), PR_GET_FPEXC(2const), PR_GET_FP_MODE(2const), PR_GET_IO_FLUSHER(2const), PR_GET_MDWE(2const), PR_GET_NO_NEW_PRIVS(2const), PR_GET_SECCOMP(2const), PR_GET_SECUREBITS(2const), PR_GET_SPECULATION_CTRL(2const), PR_GET_TAGGED_ADDR_CTRL(2const), PR_GET_THP_DISABLE(2const), PR_GET_TID_ADDRESS(2const), PR_GET_TIMING(2const), PR_GET_TSC(2const), PR_GET_UNALIGN(2const), PR_MCE_KILL(2const), PR_MCE_KILL_CLEAR(2const), PR_MCE_KILL_GET(2const), PR_MCE_KILL_SET(2const), PR_MPX_ENABLE_MANAGEMENT(2const), PR_PAC_RESET_KEYS(2const), PR_SET_CHILD_SUBREAPER(2const), PR_SET_DUMPABLE(2const), PR_SET_ENDIAN(2const), PR_SET_FPEMU(2const), PR_SET_FPEXC(2const), PR_SET_FP_MODE(2const), PR_SET_IO_FLUSHER(2const), PR_SET_KEEPCAPS(2const), PR_SET_MDWE(2const), PR_SET_MM(2const), PR_SET_MM_ARG_START(2const), PR_SET_MM_AUXV(2const), PR_SET_MM_BRK(2const), PR_SET_MM_EXE_FILE(2const), PR_SET_MM_MAP(2const), PR_SET_MM_START_BRK(2const), PR_SET_MM_START_CODE(2const), PR_SET_MM_START_DATA(2const), PR_SET_MM_START_STACK(2const), PR_SET_NAME(2const), PR_SET_NO_NEW_PRIVS(2const), PR_SET_PDEATHSIG(2const), PR_SET_PTRACER(2const), PR_SET_SECCOMP(2const), PR_SET_SECUREBITS(2const), PR_SET_SPECULATION_CTRL(2const), PR_SET_SYSCALL_USER_DISPATCH(2const), PR_SET_TAGGED_ADDR_CTRL(2const), PR_SET_THP_DISABLE(2const), PR_SET_TIMERSLACK(2const), PR_SET_TIMING(2const), PR_SET_TSC(2const), PR_SET_UNALIGN(2const), PR_SET_VMA(2const), PR_SVE_GET_VL(2const), PR_SVE_SET_VL(2const), PR_TASK_PERF_EVENTS_DISABLE(2const), ptrace(2), seccomp(2), seccomp_unotify(2), syscalls(2), wait(2), capng_change_id(3), capng_lock(3), exit(3), lttng-ust(3), pthread_setname_np(3), sd_event_add_time(3), core(5), 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), systemd.exec(5), systemd-system.conf(5), systemd.timer(5), capabilities(7), credentials(7), environ(7), pid_namespaces(7), time(7), user_namespaces(7), mount.fuse3(8)