.\" -*- coding: UTF-8 -*- .\" Copyright (c) 2010 Michael Kerrisk .\" based on a proposal from Stephan Mueller .\" .\" 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 .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH subpage_prot 2 "30 марта 2023 г." "Linux man\-pages 6.05.01" .SH ИМЯ subpage_prot \- определяет подстраничную защиту адресного диапазона .SH LIBRARY Standard C library (\fIlibc\fP, \fI\-lc\fP) .SH СИНТАКСИС .nf \fB#include \fP /* определения констант \fBSYS_*\fP */ \fB#include \fP .PP \fBint syscall(SYS_subpage_prot, unsigned long \fP\fIaddr\fP\fB, unsigned long \fP\fIlen\fP\fB,\fP \fB uint32_t *\fP\fImap\fP\fB);\fP .fi .PP \fINote\fP: glibc provides no wrapper for \fBsubpage_prot\fP(), necessitating the use of \fBsyscall\fP(2). .SH ОПИСАНИЕ Системный вызов (есть только для PowerPC) \fBsubpage_prot\fP() предоставляет возможность контроля доступа к отдельным 4\ КБ подстраницам в системах, где размер страницы равен 64\ КБ. .PP Карта защиты налагается на страницы памяти для области, начинающейся с \fIaddr\fP и имеющей размер \fIlen\fP байт. Значения обоих аргументов должны быть выровнены на 64\-КБ границу. .PP Карта защиты задаётся в буфере, на который указывает \fImap\fP. В карте на каждую 4\-килобайтную подстраницу выделяется 2 бита; таким образом, в каждом 32\-битном слове задаётся защита для 16 4\-килобайтных подстраниц внутри 64\-килобайтной страницы (поэтому количество 32\-битных слов, на которые указывает \fImap\fP, должно быть равно количеству 64\-килобайтных страниц, указанному в \fIlen\fP). Каждое 2\-битное поле в карте защиты может быть: 0 — полный доступ, 1 — защита от записи, 2 или 3 — запрет на любой доступ. .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" При успешном выполнении \fBsubpage_prot\fP() возвращается 0. В противном случае возвращается один из кодов ошибок, описанных далее. .SH ОШИБКИ .TP \fBEFAULT\fP Буфер, на который ссылается \fImap\fP, недоступен. .TP \fBEINVAL\fP Некорректное значение аргумента \fIaddr\fP или \fIlen\fP. Оба значения должны быть кратны размеру системной страницы, и они не должны указывать на область вне адресного пространства процесса, или на область, которая состоит из огромных страниц. .TP \fBENOMEM\fP Не хватает памяти. .SH СТАНДАРТЫ Linux. .SH ИСТОРИЯ Linux 2.6.25 (PowerPC). .PP The system call is provided only if the kernel is configured with \fBCONFIG_PPC_64K_PAGES\fP. .SH ЗАМЕЧАНИЯ Обычная страничная защита также работает (на уровне 64\-килобайтных страниц); механизм подстраничной защиты является дополнительным ограничением, поэтому указание 0 в 2\-битном поле не разрешит запись в страницу, которая защищена от записи другим способом. .SS Обоснование .\" 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. Данный системный вызов предоставляется для облегчения написания эмуляторов, которые работают с 64\-КБ страницами в системах PowerPC. При эмуляции систем, в которых используется меньший размер страницы (таких как x86), эмулятор не может использовать блок управления памятью (MMU) и обычные системные вызовы управления защитой страниц (эмулятор может эмулировать MMU с помощью ПО проверяя и, возможно, перераспределяя адрес при каждом обращении к памяти, но это медленно). Идея в том, что эмулятор задаёт массив защитных масок для указанного диапазона виртуальных адресов. Эти маски накладываются в месте, где аппаратные табличные записи страниц (PTE) вставляются в аппаратную таблицу страниц на основе Linux PTE, при этом Linux PTE не затрагиваются. В этом случае для защищённых областей адресного пространства начинают неявно использоваться 4\-килобайтные аппаратные страницы, а не 64\-килобайтные аппаратные страницы (на машинах с аппаратной поддержкой 64\-килобайтных страниц). .SH "СМ. ТАКЖЕ" \fBmprotect\fP(2), \fBsyscall\fP(2) .PP \fIDocumentation/admin\-guide/mm/hugetlbpage.rst\fP в дереве исходного кода ядра Linux .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства был сделан Alexander Golubev , Azamat Hackimov , Hotellook, Nikita , Spiros Georgaras , Vladislav , Yuri Kozlov и Иван Павлов . .PP Этот перевод является бесплатной документацией; прочитайте .UR https://www.gnu.org/licenses/gpl-3.0.html Стандартную общественную лицензию GNU версии 3 .UE или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ. .PP Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на .MT man-pages-ru-talks@lists.sourceforge.net .ME .