2004-11-03 13:51:07 +00:00
|
|
|
.\" Hey Emacs! This file is -*- nroff -*- source.
|
|
|
|
.\"
|
|
|
|
.\" Copyright (C) 1998 Andries Brouwer (aeb@cwi.nl)
|
|
|
|
.\"
|
|
|
|
.\" Permission is granted to make and distribute verbatim copies of this
|
|
|
|
.\" manual provided the copyright notice and this permission notice are
|
|
|
|
.\" preserved on all copies.
|
|
|
|
.\"
|
|
|
|
.\" Permission is granted to copy and distribute modified versions of this
|
|
|
|
.\" manual under the conditions for verbatim copying, provided that the
|
|
|
|
.\" entire resulting derived work is distributed under the terms of a
|
|
|
|
.\" permission notice identical to this one.
|
|
|
|
.\"
|
|
|
|
.\" Since the Linux kernel and libraries are constantly changing, this
|
|
|
|
.\" manual page may be incorrect or out-of-date. The author(s) assume no
|
|
|
|
.\" responsibility for errors or omissions, or for damages resulting from
|
|
|
|
.\" the use of the information contained herein. The author(s) may not
|
|
|
|
.\" have taken the same level of care in the production of this manual,
|
|
|
|
.\" which is licensed free of charge, as they might when working
|
|
|
|
.\" professionally.
|
|
|
|
.\"
|
|
|
|
.\" Formatted or processed versions of this manual, if unaccompanied by
|
|
|
|
.\" the source, must acknowledge the copyright and authors of this work.
|
|
|
|
.\"
|
|
|
|
.\" Modified Thu Nov 11 04:19:42 MET 1999, aeb: added PR_GET_PDEATHSIG
|
|
|
|
.\" Modified 27 Jun 02, Michael Kerrisk
|
|
|
|
.\" Added PR_SET_DUMPABLE, PR_GET_DUMPABLE,
|
|
|
|
.\" PR_SET_KEEPCAPS, PR_GET_KEEPCAPS
|
2006-09-26 12:03:11 +00:00
|
|
|
.\" Modified 2006-08-30 Guillem Jover <guillem@hadrons.org>
|
|
|
|
.\" Updated Linux versions where the options where introduced.
|
|
|
|
.\" Added PR_SET_TIMING, PR_GET_TIMING, PR_SET_NAME, PR_GET_NAME,
|
|
|
|
.\" PR_SET_UNALIGN, PR_GET_UNALIGN, PR_SET_FPEMU, PR_GET_FPEMU,
|
|
|
|
.\" PR_SET_FPEXC, PR_GET_FPEXC
|
2004-11-03 13:51:07 +00:00
|
|
|
.\"
|
2006-09-26 12:03:11 +00:00
|
|
|
.TH PRCTL 2 2006-08-30 "Linux 2.6.17" "Linux Programmer's Manual"
|
2004-11-03 13:51:07 +00:00
|
|
|
.SH NAME
|
|
|
|
prctl \- operations on a process
|
|
|
|
.SH SYNOPSIS
|
|
|
|
.B #include <sys/prctl.h>
|
|
|
|
.sp
|
|
|
|
.BI "int prctl(int " option ", unsigned long " arg2 ", unsigned long " arg3
|
|
|
|
.BI ", unsigned long " arg4 ", unsigned long " arg5 );
|
|
|
|
.SH DESCRIPTION
|
2005-10-19 06:54:38 +00:00
|
|
|
.BR prctl ()
|
2004-11-03 13:51:07 +00:00
|
|
|
is called with a first argument describing what to do
|
|
|
|
(with values defined in <\fIlinux/prctl.h\fP>), and further
|
|
|
|
parameters with a significance depending on the first one.
|
|
|
|
The first argument can be:
|
|
|
|
.TP
|
|
|
|
.B PR_SET_PDEATHSIG
|
|
|
|
(since Linux 2.1.57)
|
|
|
|
Set the parent process death signal
|
2006-09-26 13:01:24 +00:00
|
|
|
of the calling process to \fIarg2\fP (either a signal value
|
2004-11-03 13:51:07 +00:00
|
|
|
in the range 1..maxsig, or 0 to clear).
|
2006-09-26 13:01:24 +00:00
|
|
|
This is the signal that the calling process will get when its
|
2005-10-19 14:16:57 +00:00
|
|
|
parent dies.
|
|
|
|
This value is cleared upon a
|
|
|
|
.BR fork ().
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
|
|
|
.B PR_GET_PDEATHSIG
|
2006-09-26 12:03:11 +00:00
|
|
|
(Since Linux 2.3.15)
|
2004-11-03 13:51:07 +00:00
|
|
|
Read the current value of the parent process death signal
|
|
|
|
into the (int *) \fIarg2\fP.
|
|
|
|
.TP
|
|
|
|
.B PR_SET_DUMPABLE
|
2006-09-26 12:03:11 +00:00
|
|
|
(Since Linux 2.3.20)
|
2004-11-03 13:51:07 +00:00
|
|
|
Set the state of the flag determining whether core dumps are produced
|
|
|
|
for this process upon delivery of a signal whose default behaviour is
|
|
|
|
to produce a core dump.
|
|
|
|
(Normally this flag is set for a process by default, but it is cleared
|
2005-07-18 14:25:42 +00:00
|
|
|
when a set-user-ID or set-group-ID program is executed and also by
|
|
|
|
various system calls that manipulate process UIDs and GIDs).
|
2005-09-16 14:05:39 +00:00
|
|
|
In kernels up to and including 2.6.12,
|
2004-11-03 13:51:07 +00:00
|
|
|
.I arg2
|
|
|
|
must be either 0 (process is not dumpable) or 1 (process is dumpable).
|
2006-10-02 04:48:28 +00:00
|
|
|
Between kernels 2.6.13 and 2.6.17, the value 2 was also permitted,
|
2006-09-26 08:36:02 +00:00
|
|
|
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 http://marc.theaimsgroup.com/?l=linux-kernel&m=115270289030630&w=2
|
|
|
|
.\" Subject: Fix prctl privilege escalation (CVE-2006-2451)
|
|
|
|
.\" From: Marcel Holtmann <marcel () holtmann ! org>
|
|
|
|
.\" Date: 2006-07-12 11:12:00
|
2005-09-16 14:05:39 +00:00
|
|
|
(See also the description of
|
|
|
|
.I /proc/sys/fs/suid_dumpable
|
|
|
|
in
|
|
|
|
.BR proc (5).)
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
|
|
|
.B PR_GET_DUMPABLE
|
2006-09-26 12:03:11 +00:00
|
|
|
(Since Linux 2.3.20)
|
2004-11-03 13:51:07 +00:00
|
|
|
Return (as the function result) the current state of the calling
|
|
|
|
process's dumpable flag.
|
2006-03-05 20:34:30 +00:00
|
|
|
.\" Since Linux 2.6.13, the dumpable flag can have the value 2,
|
|
|
|
.\" but in 2.6.13 PR_GET_DUMPABLE simply returns 1 if the dumpable
|
|
|
|
.\" flags has a non-zero value. This was fixed in 2.6.14.
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
|
|
|
.B PR_SET_KEEPCAPS
|
2006-09-26 12:03:11 +00:00
|
|
|
(Since Linux 2.2.18)
|
2004-11-03 13:51:07 +00:00
|
|
|
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
|
2005-07-18 16:55:22 +00:00
|
|
|
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.
|
2004-11-03 13:51:07 +00:00
|
|
|
(By default, these credential sets are cleared).
|
|
|
|
.I arg2
|
|
|
|
must be either 0 (capabilities are cleared) or 1 (capabilities are kept).
|
|
|
|
.TP
|
|
|
|
.B PR_GET_KEEPCAPS
|
2006-09-26 12:03:11 +00:00
|
|
|
(Since Linux 2.2.18)
|
2004-11-03 13:51:07 +00:00
|
|
|
Return (as the function result) the current state of the calling process's
|
|
|
|
"keep capabilities" flag.
|
2006-09-26 12:03:11 +00:00
|
|
|
.TP
|
|
|
|
.B 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 \fBPR_TIMING_STATISTICAL\fP
|
|
|
|
or \fBPR_TIMING_TIMESTAMP\fP to \fIarg2\fP.
|
|
|
|
.TP
|
|
|
|
.B PR_GET_TIMING
|
|
|
|
(Since Linux 2.6.0-test4)
|
|
|
|
Return (as the function result) which process timing method is currently
|
|
|
|
in use.
|
|
|
|
.TP
|
|
|
|
.B PR_SET_NAME
|
|
|
|
(Since Linux 2.6.9)
|
2006-09-26 13:01:24 +00:00
|
|
|
Set the process name for the calling process to \fIarg2\fP.
|
2006-09-26 12:03:11 +00:00
|
|
|
.TP
|
|
|
|
.B PR_GET_NAME
|
|
|
|
(Since Linux 2.6.11)
|
2006-09-26 13:01:24 +00:00
|
|
|
Get the process name for the calling process from \fIarg2\fP.
|
|
|
|
.TP
|
|
|
|
.B PR_GET_ENDIAN
|
|
|
|
(Since Linux 2.6.18, PowerPC only)
|
|
|
|
Return the endian-ness of the calling process.
|
|
|
|
.TP
|
|
|
|
.B PR_SET_ENDIAN
|
|
|
|
(Since Linux 2.6.18, PowerPC only)
|
|
|
|
Set the endian-ness of the calling process to the value given
|
|
|
|
in \fIarg2\fP, which should be one of the following:
|
|
|
|
.BR PR_ENDIAN_BIG ,
|
|
|
|
.BR PR_ENDIAN_LITTLE ,
|
|
|
|
or
|
|
|
|
.BR PR_ENDIAN_PPC_LITTLE
|
|
|
|
(PowerPC pseudo little endian).
|
2006-09-26 12:03:11 +00:00
|
|
|
.TP
|
|
|
|
.B PR_SET_UNALIGN
|
|
|
|
(Since Linux 2.3.48, only on parisc and ia64)
|
|
|
|
Set unaligned access control bits to \fIarg2\fP. Pass
|
|
|
|
\fBPR_UNALIGN_NOPRINT\fP to silently fix up unaligned user accesses, or
|
|
|
|
\fBPR_UNALIGN_SIGBUS\fP to generate SIGBUS on unaligned user access.
|
|
|
|
.TP
|
|
|
|
.B PR_GET_UNALIGN
|
|
|
|
(Since Linux 2.3.48, only on parisc and ia64)
|
|
|
|
Get unaligned access control bits from \fIarg2\fP.
|
|
|
|
.TP
|
|
|
|
.B PR_SET_FPEMU
|
|
|
|
(Since Linux 2.4.18, 2.5.9, only on ia64)
|
|
|
|
Set floating-point emulation control bits to \fIarg2\fP.
|
|
|
|
Pass \fBPR_FPEMU_NOPRINT\fP to silently emulate fp operations accesses, or
|
|
|
|
\fBPR_FPEMU_SIGFPE\fP to not emulate fp operations and send SIGFPE instead.
|
|
|
|
.TP
|
|
|
|
.B PR_GET_FPEMU
|
|
|
|
(Since Linux 2.4.18, 2.5.9, only on ia64)
|
|
|
|
Get floating-point emulation control bits from \fIarg2\fP.
|
|
|
|
.TP
|
|
|
|
.B PR_SET_FPEXC
|
2006-09-26 13:01:24 +00:00
|
|
|
(Since Linux 2.4.21, 2.5.32, only on PowerPC)
|
2006-09-26 12:03:11 +00:00
|
|
|
Set floating-point exception mode to \fIarg2\fP. Pass
|
|
|
|
\fBPR_FP_EXC_SW_ENABLE\fP to use FPEXC for FP exception enables,
|
|
|
|
\fBPR_FP_EXC_DIV\fP for floating point divide by zero,
|
|
|
|
\fBPR_FP_EXC_OVF\fP for floating point overflow,
|
|
|
|
\fBPR_FP_EXC_UND\fP for floating point underflow,
|
|
|
|
\fBPR_FP_EXC_RES\fP for floating point inexact result,
|
|
|
|
\fBPR_FP_EXC_INV\fP for floating point invalid operation,
|
|
|
|
\fBPR_FP_EXC_DISABLED\fP for FP exceptions disabled,
|
|
|
|
\fBPR_FP_EXC_NONRECOV\fP for async non-recoverable exception mode,
|
|
|
|
\fBPR_FP_EXC_ASYNC\fP for async recoverable exception mode,
|
|
|
|
\fBPR_FP_EXC_PRECISE\fP for precise exception mode.
|
|
|
|
.TP
|
|
|
|
.B PR_GET_FPEXC
|
2006-09-26 13:01:24 +00:00
|
|
|
(Since Linux 2.4.21, 2.5.32, only on PowerPC)
|
2006-09-26 12:03:11 +00:00
|
|
|
Get floating-point exception mode from \fIarg2\fP.
|
2004-11-03 13:51:07 +00:00
|
|
|
.SH "RETURN VALUE"
|
|
|
|
.B PR_GET_DUMPABLE
|
|
|
|
and
|
|
|
|
.B PR_GET_KEEPCAPS
|
|
|
|
return 0 or 1 on success.
|
|
|
|
All other
|
|
|
|
.I option
|
|
|
|
values return 0 on success.
|
|
|
|
On error, \-1 is returned, and
|
|
|
|
.I errno
|
|
|
|
is set appropriately.
|
|
|
|
.SH ERRORS
|
|
|
|
.TP
|
|
|
|
.B EINVAL
|
|
|
|
The value of
|
|
|
|
.I option
|
|
|
|
is not recognized, or it is
|
|
|
|
.B PR_SET_PDEATHSIG
|
|
|
|
and
|
|
|
|
.I arg2
|
|
|
|
is not zero or a signal number.
|
|
|
|
.SH "CONFORMING TO"
|
|
|
|
This call is Linux-specific.
|
2005-10-20 15:11:10 +00:00
|
|
|
IRIX has a
|
|
|
|
.BR prctl ()
|
|
|
|
system call (also introduced in Linux 2.1.44
|
2004-11-03 13:51:07 +00:00
|
|
|
as irix_prctl on the MIPS architecture),
|
|
|
|
with prototype
|
|
|
|
.sp
|
|
|
|
.BI "ptrdiff_t prctl(int " option ", int " arg2 ", int " arg3 );
|
|
|
|
.sp
|
|
|
|
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,
|
2005-07-06 11:21:27 +00:00
|
|
|
get or set the maximum stack size, etc.
|
2004-11-03 13:51:07 +00:00
|
|
|
.SH AVAILABILITY
|
2005-10-19 14:48:35 +00:00
|
|
|
The
|
|
|
|
.BR prctl ()
|
|
|
|
system call was introduced in Linux 2.1.57.
|
|
|
|
.\" The library interface was added in glibc 2.0.6
|
2004-11-03 13:51:07 +00:00
|
|
|
.SH "SEE ALSO"
|
2006-08-03 03:02:31 +00:00
|
|
|
.BR signal (2),
|
2006-03-31 07:10:17 +00:00
|
|
|
.BR core (5)
|