diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-24 04:52:22 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-24 04:52:22 +0000 |
commit | 7f3caba522f4d24764f29d83aa2de9198bb7f01c (patch) | |
tree | 66b798ea74302325d6a5c11df044cbe4bb845af1 /man2/subpage_prot.2 | |
parent | Adding upstream version 6.7. (diff) | |
download | manpages-upstream.tar.xz manpages-upstream.zip |
Adding upstream version 6.8.upstream/6.8upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'man2/subpage_prot.2')
-rw-r--r-- | man2/subpage_prot.2 | 118 |
1 files changed, 0 insertions, 118 deletions
diff --git a/man2/subpage_prot.2 b/man2/subpage_prot.2 deleted file mode 100644 index aaeb883..0000000 --- a/man2/subpage_prot.2 +++ /dev/null @@ -1,118 +0,0 @@ -.\" Copyright (c) 2010 Michael Kerrisk <mtk.manpages@gmail.com> -.\" based on a proposal from Stephan Mueller <smueller@atsec.com> -.\" -.\" SPDX-License-Identifier: Linux-man-pages-copyleft -.\" -.\" Various pieces of text taken from the kernel source and the commentary -.\" in Linux commit fa28237cfcc5827553044cbd6ee52e33692b0faa -.\" both written by Paul Mackerras <paulus@samba.org> -.\" -.TH subpage_prot 2 2023-10-31 "Linux man-pages 6.7" -.SH NAME -subpage_prot \- define a subpage protection for an address range -.SH LIBRARY -Standard C library -.RI ( libc ", " \-lc ) -.SH SYNOPSIS -.nf -.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */" -.B #include <unistd.h> -.P -.BI "int syscall(SYS_subpage_prot, unsigned long " addr ", unsigned long " len , -.BI " uint32_t *" map ); -.fi -.P -.IR Note : -glibc provides no wrapper for -.BR subpage_prot (), -necessitating the use of -.BR syscall (2). -.SH DESCRIPTION -The PowerPC-specific -.BR subpage_prot () -system call provides the facility to control the access -permissions on individual 4\ kB subpages on systems configured with -a page size of 64\ kB. -.P -The protection map is applied to the memory pages in the region starting at -.I addr -and continuing for -.I len -bytes. -Both of these arguments must be aligned to a 64-kB boundary. -.P -The protection map is specified in the buffer pointed to by -.IR map . -The map has 2 bits per 4\ kB subpage; -thus each 32-bit word specifies the protections of 16 4\ kB subpages -inside a 64\ kB page -(so, the number of 32-bit words pointed to by -.I map -should equate to the number of 64-kB pages specified by -.IR len ). -Each 2-bit field in the protection map is either 0 to allow any access, -1 to prevent writes, or 2 or 3 to prevent all accesses. -.SH RETURN VALUE -On success, -.BR subpage_prot () -returns 0. -Otherwise, one of the error codes specified below is returned. -.SH ERRORS -.TP -.B EFAULT -The buffer referred to by -.I map -is not accessible. -.TP -.B EINVAL -The -.I addr -or -.I len -arguments are incorrect. -Both of these arguments must be aligned to a multiple of the system page size, -and they must not refer to a region outside of the -address space of the process or to a region that consists of huge pages. -.TP -.B ENOMEM -Out of memory. -.SH STANDARDS -Linux. -.SH HISTORY -Linux 2.6.25 (PowerPC). -.P -The system call is provided only if the kernel is configured with -.BR CONFIG_PPC_64K_PAGES . -.SH NOTES -Normal page protections (at the 64-kB page level) also apply; -the subpage protection mechanism is an additional constraint, -so putting 0 in a 2-bit field won't allow writes to a page that is otherwise -write-protected. -.SS Rationale -This system call is provided to assist writing emulators that -operate using 64-kB pages on PowerPC systems. -When emulating systems such as x86, which uses a smaller page size, -the emulator can no longer use the memory-management unit (MMU) -and normal system calls for controlling page protections. -(The emulator could emulate the MMU by checking and possibly remapping -the address for each memory access in software, but that is slow.) -The idea is that the emulator supplies an array of protection masks -to apply to a specified range of virtual addresses. -These masks are applied at the level where hardware page-table entries (PTEs) -are inserted into the hardware page table based on the Linux PTEs, -so the Linux PTEs are not affected. -Implicit in this is that the regions of the address space that are -protected are switched to use 4-kB hardware pages rather than 64-kB -hardware pages (on machines with hardware 64-kB page support). -.\" In the initial implementation, it was the case that: -.\" In fact the whole process is switched to use 4 kB hardware pages when the -.\" subpage_prot system call is used, but this could be improved in future -.\" to switch only the affected segments. -.\" But Paul Mackerass says (Oct 2010): I'm pretty sure we now only switch -.\" the affected segment, not the whole process. -.SH SEE ALSO -.BR mprotect (2), -.BR syscall (2) -.P -.I Documentation/admin\-guide/mm/hugetlbpage.rst -in the Linux kernel source tree |