Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

prctl(2) [redhat man page]

PRCTL(2)						     Linux Programmer's Manual							  PRCTL(2)

NAME
prctl - operations on a process SYNOPSIS
#include <sys/prctl.h> int prctl(int option, unsigned long arg2, unsigned long arg3 , unsigned long arg4, unsigned long arg5); DESCRIPTION
prctl is called with a first argument describing what to do (with values defined in <linux/prctl.h>), and further parameters with a signif- icance 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 current process to arg2 (either a signal value in the range 1..maxsig, or 0 to clear). This is the signal that the current process will get when its parent dies. This value is cleared upon a fork(). 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.4) 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 when a set-UID or set-GID program is executed and also by various system calls that manipulate process UIDs and GIDs). arg2 must be either 0 (process is not dumapable) or 1 (process is dumpable). PR_GET_DUMPABLE (Since Linux 2.4) Return (as the function result) the current state of the calling process's dumpable flag. PR_SET_KEEPCAPS 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 all of the process's real, effective, and saved set user IDs 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 Return (as the function result) the current state of the calling process's "keep capabilities" flag. 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. CONFORMING TO
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., etc. AVAILABILITY
The prctl() systemcall was introduced in Linux 2.1.57. There is no prctl() library call as yet. SEE ALSO
signal(2) Linux 2.4.18 2002-06-27 PRCTL(2)

Check Out this Related Man Page

ARCH_PRCTL(2)						     Linux Programmer's Manual						     ARCH_PRCTL(2)

NAME
arch_prctl - set architecture-specific thread state SYNOPSIS
#include <asm/prctl.h> #include <sys/prctl.h> int arch_prctl(int code, unsigned long addr); int arch_prctl(int code, unsigned long *addr); DESCRIPTION
The arch_prctl() function sets architecture-specific process or thread state. code selects a subfunction and passes argument addr to it; addr is interpreted as either an unsigned long for the "set" operations, or as an unsigned long *, for the "get" operations. Sub functions for x86-64 are: ARCH_SET_FS Set the 64-bit base for the FS register to addr. ARCH_GET_FS Return the 64-bit base value for the FS register of the current thread in the unsigned long pointed to by addr. ARCH_SET_GS Set the 64-bit base for the GS register to addr. ARCH_GET_GS Return the 64-bit base value for the GS register of the current thread in the unsigned long pointed to by addr. RETURN VALUE
On success, arch_prctl() returns 0; on error, -1 is returned, and errno is set to indicate the error. ERRORS
EFAULT addr points to an unmapped address or is outside the process address space. EINVAL code is not a valid subcommand. EPERM addr is outside the process address space. CONFORMING TO
arch_prctl() is a Linux/x86-64 extension and should not be used in programs intended to be portable. NOTES
arch_prctl() is only supported on Linux/x86-64 for 64-bit programs currently. The 64-bit base changes when a new 32-bit segment selector is loaded. ARCH_SET_GS is disabled in some kernels. Context switches for 64-bit segment bases are rather expensive. It may be a faster alternative to set a 32-bit base using a segment selec- tor by setting up an LDT with modify_ldt(2) or using the set_thread_area(2) system call in kernel 2.5 or later. arch_prctl() is only needed when you want to set bases that are larger than 4GB. Memory in the first 2GB of address space can be allocated by using mmap(2) with the MAP_32BIT flag. As of version 2.7, glibc provides no prototype for arch_prctl(). You have to declare it yourself for now. This may be fixed in future glibc versions. FS may be already used by the threading library. SEE ALSO
mmap(2), modify_ldt(2), prctl(2), set_thread_area(2) AMD X86-64 Programmer's manual COLOPHON
This page is part of release 3.25 of the Linux man-pages project. A description of the project, and information about reporting bugs, can be found at http://www.kernel.org/doc/man-pages/. Linux 2007-12-26 ARCH_PRCTL(2)
Man Page