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).

2024-06-01 Linux man-pages 6.9.1