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
|
||||
.\" 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"
|
||||
.SH NAME
|
||||
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.
|
||||
.PP
|
||||
.I prot
|
||||
is either
|
||||
is a combination of the following access flags:
|
||||
.B PROT_NONE
|
||||
or a bitwise-or of the other values in the following list:
|
||||
.TP 1.1i
|
||||
|
@ -75,6 +69,40 @@ The memory can be modified.
|
|||
.TP
|
||||
.B PROT_EXEC
|
||||
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
|
||||
Like
|
||||
.BR mprotect (),
|
||||
|
@ -122,7 +150,26 @@ or not a multiple of the system page size.
|
|||
.RB ( pkey_mprotect ())
|
||||
\fIpkey\fP has not been allocated with
|
||||
.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
|
||||
.B ENOMEM
|
||||
Internal kernel structures could not be allocated.
|
||||
|
|
Loading…
Reference in New Issue