NAME
prctl - operations on a process
SYNOPSIS
#include <sys/prctl.h>
I int prctl(int option , unsigned long arg2 , unsigned long arg3 ,
I unsigned long arg4 , unsigned long arg5 );
DESCRIPTION
R prctl ()
is called with a first argument describing what to do
(with values defined in <linux/prctl.h>), and further
parameters with a significance depending on the first one.
The first argument can be:
PR_SET_PDEATHSIG
(since Linux 2.1.57)
Set the parent process death signal
of the calling process to
arg2 (either a signal value
in the range 1..maxsig, or 0 to clear).
This is the signal that the calling process will get when its
parent dies.
This value is cleared upon a
fork(2).
PR_GET_PDEATHSIG
(Since Linux 2.3.15)
Read the current value of the parent process death signal
into the (int *) arg2.
PR_SET_DUMPABLE
(Since Linux 2.3.20)
Set the state of the flag determining whether core dumps are produced
for this process upon delivery of a signal whose default behavior is
to produce a core dump.
(Normally this flag is set for a process by default, but it is cleared
when a set-user-ID or set-group-ID program is executed and also by
various system calls that manipulate process UIDs and GIDs).
In kernels up to and including 2.6.12,
arg2
must be either 0 (process is not dumpable) or 1 (process is dumpable).
Between kernels 2.6.13 and 2.6.17, the value 2 was also permitted,
which caused any binary which normally would not be dumped
to be dumped readable by root only;
for security reasons, this feature has been removed.
(See also the description of
/proc/sys/fs/suid_dumpable
in
proc(5).)
PR_GET_DUMPABLE
(Since Linux 2.3.20)
Return (as the function result) the current state of the calling
process's dumpable flag.
PR_SET_KEEPCAPS
(Since Linux 2.2.18)
Set the state of the process's "keep capabilities" flag,
which determines whether the process's effective and permitted
capability sets are cleared when a change is made to the process's user IDs
such that the process's real UID, effective UID, and saved set-user-ID
all become non-zero when at least one of them previously had the value 0.
(By default, these credential sets are cleared).
arg2
must be either 0 (capabilities are cleared) or 1 (capabilities are kept).
PR_GET_KEEPCAPS
(Since Linux 2.2.18)
Return (as the function result) the current state of the calling process's
"keep capabilities" flag.
PR_SET_TIMING
(Since Linux 2.6.0-test4)
Set whether to use (normal, traditional) statistical process timing or
accurate timestamp based process timing, by passing PR_TIMING_STATISTICAL
or PR_TIMING_TIMESTAMP to arg2.
PR_GET_TIMING
(Since Linux 2.6.0-test4)
Return (as the function result) which process timing method is currently
in use.
PR_SET_NAME
(Since Linux 2.6.9)
Set the process name for the calling process to arg2.
PR_GET_NAME
(Since Linux 2.6.11)
Get the process name for the calling process from arg2.
PR_GET_ENDIAN
(Since Linux 2.6.18, PowerPC only)
Return the endian-ness of the calling process.
PR_SET_ENDIAN
(Since Linux 2.6.18, PowerPC only)
Set the endian-ness of the calling process to the value given
in arg2, which should be one of the following:
R PR_ENDIAN_BIG ,
R PR_ENDIAN_LITTLE ,
or
R PR_ENDIAN_PPC_LITTLE
(PowerPC pseudo little endian).
PR_SET_UNALIGN
(Since Linux 2.3.48, only on parisc and ia64)
Set unaligned access control bits to arg2.
Pass
PR_UNALIGN_NOPRINT to silently fix up unaligned user accesses,
or PR_UNALIGN_SIGBUS to generate
SIGBUS
on unaligned user access.
PR_GET_UNALIGN
(Since Linux 2.3.48, only on parisc and ia64)
Get unaligned access control bits from arg2.
PR_SET_FPEMU
(Since Linux 2.4.18, 2.5.9, only on ia64)
Set floating-point emulation control bits to arg2.
Pass PR_FPEMU_NOPRINT to silently emulate fp operations accesses, or
PR_FPEMU_SIGFPE to not emulate fp operations and send
SIGFPE
instead.
PR_GET_FPEMU
(Since Linux 2.4.18, 2.5.9, only on ia64)
Get floating-point emulation control bits from arg2.
PR_SET_FPEXC
(Since Linux 2.4.21, 2.5.32, only on PowerPC)
Set floating-point exception mode to arg2.
Pass PR_FP_EXC_SW_ENABLE to use FPEXC for FP exception enables,
PR_FP_EXC_DIV for floating point divide by zero,
PR_FP_EXC_OVF for floating point overflow,
PR_FP_EXC_UND for floating point underflow,
PR_FP_EXC_RES for floating point inexact result,
PR_FP_EXC_INV for floating point invalid operation,
PR_FP_EXC_DISABLED for FP exceptions disabled,
PR_FP_EXC_NONRECOV for async non-recoverable exception mode,
PR_FP_EXC_ASYNC for async recoverable exception mode,
PR_FP_EXC_PRECISE for precise exception mode.
PR_GET_FPEXC
(Since Linux 2.4.21, 2.5.32, only on PowerPC)
Get floating-point exception mode from arg2.
RETURN VALUE
PR_GET_DUMPABLE
and
PR_GET_KEEPCAPS
return 0 or 1 on success.
All other
option
values return 0 on success.
On error, -1 is returned, and
errno
is set appropriately.
ERRORS
EINVAL
The value of
option
is not recognized, or it is
PR_SET_PDEATHSIG
and
arg2
is not zero or a signal number.
VERSIONS
The
R prctl ()
system call was introduced in Linux 2.1.57.
CONFORMING TO
This call is Linux specific.
IRIX has a
R prctl ()
system call (also introduced in Linux 2.1.44
as irix_prctl on the MIPS architecture),
with prototype
I ptrdiff_t prctl(int option , int arg2 , int arg3 );
and options 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, etc.
SEE ALSO