mirror of https://github.com/mkerrisk/man-pages
mprotect.2: Document PROT_SEM, PROT_SAO, PROT_GROWSUP, and PROT_GROWSDOWN
This commit is contained in:
parent
50efeef8ca
commit
a9799e8a86
|
@ -30,12 +30,6 @@
|
||||||
.\" 2007-06-02, mtk: Fairly substantial rewrites and additions, and
|
.\" 2007-06-02, mtk: Fairly substantial rewrites and additions, and
|
||||||
.\" a much improved example program.
|
.\" a much improved example program.
|
||||||
.\"
|
.\"
|
||||||
.\" FIXME The following protection flags need documenting:
|
|
||||||
.\" PROT_SEM
|
|
||||||
.\" PROT_GROWSDOWN
|
|
||||||
.\" PROT_GROWSUP
|
|
||||||
.\" PROT_SAO (PowerPC)
|
|
||||||
.\"
|
|
||||||
.TH MPROTECT 2 2015-07-23 "Linux" "Linux Programmer's Manual"
|
.TH MPROTECT 2 2015-07-23 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
mprotect, pkey_mprotect \- set protection on a region of memory
|
mprotect, pkey_mprotect \- set protection on a region of memory
|
||||||
|
@ -60,7 +54,7 @@ that violates the protection, then the kernel generates a
|
||||||
signal for the process.
|
signal for the process.
|
||||||
.PP
|
.PP
|
||||||
.I prot
|
.I prot
|
||||||
is either
|
is a combination of the following access flags:
|
||||||
.B PROT_NONE
|
.B PROT_NONE
|
||||||
or a bitwise-or of the other values in the following list:
|
or a bitwise-or of the other values in the following list:
|
||||||
.TP 1.1i
|
.TP 1.1i
|
||||||
|
@ -75,6 +69,40 @@ The memory can be modified.
|
||||||
.TP
|
.TP
|
||||||
.B PROT_EXEC
|
.B PROT_EXEC
|
||||||
The memory can be executed.
|
The memory can be executed.
|
||||||
|
.TP
|
||||||
|
.BR PROT_SEM " (since Linux 2.5.7)"
|
||||||
|
The memory can be used for atomic operations. It was introduced as part of
|
||||||
|
.BR futex (2)
|
||||||
|
implementation (in order to guarantee ability to perform atomic
|
||||||
|
operations required by its commands such as
|
||||||
|
.BR FUTEX_WAIT ),
|
||||||
|
but not actually used in any currently supported architecture so far.
|
||||||
|
.\" aba46c5027cb59d98052231b36efcbbde9c77a1d ef3d3246a0d06be622867d21af25f997aeeb105f
|
||||||
|
.TP
|
||||||
|
.BR PROT_SAO " (since Linux 2.6.26)"
|
||||||
|
The memory should have strong access ordering. This feature is specific to
|
||||||
|
PowerPC architecture (version 2.06 of architecture specification adds SAO CPU
|
||||||
|
feature, and it is available on POWER 7 or PowerPC A2, for example).
|
||||||
|
.PP
|
||||||
|
Additionally (since Linux 2.6.0),
|
||||||
|
.I prot
|
||||||
|
can have one of the following flags set:
|
||||||
|
.TP 1.1i
|
||||||
|
.\" mm/mmap.c:
|
||||||
|
.\" vm_flags |= calc_vm_prot_bits(prot, pkey) | calc_vm_flag_bits(flags) |
|
||||||
|
.\" mm->def_flags | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC;
|
||||||
|
.\" And calc_vm_flag_bits converts only GROWSDOWN/DENYWRITE/LOCKED.
|
||||||
|
.B PROT_GROWSUP
|
||||||
|
Apply protection mode up to the end of the mapping which grows up (it should be a
|
||||||
|
stack segment on HP PA-RISC, since there are no other ways to map a segment with
|
||||||
|
.B VM_GROWSUP
|
||||||
|
even if architecture has support for it.)
|
||||||
|
.TP
|
||||||
|
.B PROT_GROWSDOWN
|
||||||
|
Apply protection mode down to the beginning of the mapping which grows down (it
|
||||||
|
should be stack segment or mapped with
|
||||||
|
.B MAP_GROWSDOWN
|
||||||
|
flag set.)
|
||||||
.PP
|
.PP
|
||||||
Like
|
Like
|
||||||
.BR mprotect (),
|
.BR mprotect (),
|
||||||
|
@ -122,7 +150,26 @@ or not a multiple of the system page size.
|
||||||
.RB ( pkey_mprotect ())
|
.RB ( pkey_mprotect ())
|
||||||
\fIpkey\fP has not been allocated with
|
\fIpkey\fP has not been allocated with
|
||||||
.BR pkey_alloc (2)
|
.BR pkey_alloc (2)
|
||||||
.\" Or: both PROT_GROWSUP and PROT_GROWSDOWN were specified in 'prot'.
|
.TP
|
||||||
|
.BR EINVAL
|
||||||
|
Both
|
||||||
|
.BR PROT_GROWSUP " and " PROT_GROWSDOWN
|
||||||
|
were specified in
|
||||||
|
.IR prot .
|
||||||
|
.TP
|
||||||
|
.BR EINVAL
|
||||||
|
Invalid (other than
|
||||||
|
.BR PROT_READ ", " PROT_WRITE ", " PROT_EXEC ", " PROT_SEM ", "
|
||||||
|
.BR PROT_SAO " (on PowerPC only), " PROT_GROWSUP ", " PROT_GROWSDOWN )
|
||||||
|
flags specified in
|
||||||
|
.IR prot .
|
||||||
|
.TP
|
||||||
|
.BR EINVAL
|
||||||
|
(PowerPC architecture)
|
||||||
|
.B PROT_SAO
|
||||||
|
specified in
|
||||||
|
.IR prot ,
|
||||||
|
but SAO hardware feature is not available.
|
||||||
.TP
|
.TP
|
||||||
.B ENOMEM
|
.B ENOMEM
|
||||||
Internal kernel structures could not be allocated.
|
Internal kernel structures could not be allocated.
|
||||||
|
|
Loading…
Reference in New Issue