Provided by: manpages-dev_3.01-1_all bug


       prctl - operations on a process


       #include <sys/prctl.h>

       int prctl(int option, unsigned long arg2, unsigned long arg3,
                 unsigned long arg4, unsigned long arg5);


       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:

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

              (Since  Linux  2.3.15)  Read  the  current  value  of the parent
              process death signal into the (int *) arg2.

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

              (Since Linux 2.3.20) Return (as the function result) the current
              state of the calling process’s dumpable flag.

              (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

              (Since Linux 2.2.18) Return (as the function result) the current
              state of the calling process’s "keep capabilities" flag.

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

              (Since  Linux 2.6.0-test4) Return (as the function result) which
              process timing method is currently in use.

              (Since Linux 2.6.9) Set the process name for the calling process
              to arg2.

              (Since  Linux  2.6.11)  Get  the  process  name  for the calling
              process from arg2.

              (Since Linux 2.6.18, PowerPC only) Return the endian-ness of the
              calling process.

              (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:   PR_ENDIAN_BIG,   PR_ENDIAN_LITTLE,   or
              PR_ENDIAN_PPC_LITTLE (PowerPC pseudo little endian).

              (Only on: ia64, since Linux 2.3.48; parisc, since Linux  2.6.15;
              PowerPC,  since  Linux  2.6.18;  Alpha,  since Linux 2.6.22) 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.

              (see   PR_SET_UNALIGN   for   information   on   versions    and
              architectures) Get unaligned access control bits from arg2.

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

              (Since Linux 2.4.18, 2.5.9, only  on  ia64)  Get  floating-point
              emulation control bits from arg2.

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

              (Since Linux 2.4.21, 2.5.32, only on PowerPC) Get floating-point
              exception mode from arg2.


       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.


       EINVAL The value of option is not recognized, or it is PR_SET_PDEATHSIG
              and arg2 is not zero or a signal number.


       The prctl() system call was introduced in Linux 2.1.57.


       This call is Linux-specific.  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 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.


       signal(2), core(5)


       This  page  is  part of release 3.01 of the Linux man-pages project.  A
       description of the project, and information about reporting  bugs,  can
       be found at