.\" -*- coding: UTF-8 -*- .\" Copyright (C) 2003, Michael Kerrisk .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" 2003-12-10 Initial creation, Michael Kerrisk .\" 2004-10-28 aeb, corrected prototype, prot must be 0 .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH remap_file_pages 2 "31 октября 2023 г." "Linux man\-pages 6.06" .SH ИМЯ remap_file_pages \- создаёт нелинейное файловое отображение .SH LIBRARY Standard C library (\fIlibc\fP, \fI\-lc\fP) .SH СИНТАКСИС .nf \fB#define _GNU_SOURCE\fP /* Смотрите feature_test_macros(7) */ \fB#include \fP .P \fB[[deprecated]] int remap_file_pages(void \fP\fIaddr\fP\fB[.\fP\fIsize\fP\fB], size_t \fP\fIsize\fP\fB,\fP \fB int \fP\fIprot\fP\fB, size_t \fP\fIpgoff\fP\fB, int \fP\fIflags\fP\fB);\fP .fi .SH ОПИСАНИЕ .\" commit 33041a0d76d3c3e0aff28ac95a2ffdedf1282dbc .\" http://lwn.net/Articles/597632/ .\" commit c8d78c1823f46519473949d33f0d1d33fe21ea16 \fBЗамечание\fP: данный системный вызов, начиная с Linux 3.16, устарел. В Linux 4.0 реализация была заменена на более медленную эмуляцию ядром. В приложениях, где он используется, нужно применять альтернативные вызовы. Данное изменение было сделано из\-за сложности кода ядра этого системного вызова, и считается, что им почти никто или вообще никто не пользуется. Какое\-то время он использовался в приложениях баз данных на 32\-разрядных системах, но этих вариантов использования на 64\-разрядных системах замечено не было. .P Системный вызов \fBremap_file_pages\fP() используется для создания нелинейного отображения, то есть отображения, в котором страницы файла отображаются в память непоследовательно. Преимущество использования \fBremap_file_pages\fP() по сравнению с повторением вызовов \fBmmap\fP(2) в том, что первый не требует от ядра создания дополнительных структур данных VMA (областей виртуальной памяти). .P Для создания нелинейного отображения выполните следующее: .TP 3 1. Создайте отображение (пока линейное) с помощью \fBmmap\fP(2). Данное отображение должно создаваться с флагом \fBMAP_SHARED\fP. .TP 2. Выполните переупорядочивание соответствия между страницами отображения и страницами файла с помощью одного или нескольких вызовов \fBremap_file_pages\fP(). Возможно отображать одну страницу файла в несколько мест отображаемой области. .P В аргументах \fIpgoff\fP и \fIsize\fP указывается область файла, которая будет перенесёна в отображение: в \fIpgoff\fP задаётся смещение в файле, измеряемое в размерах системных страниц; в \fIsize\fP задаётся длина области в байтах. .P Аргумент \fIaddr\fP предназначен для двух целей. Во\-первых, им определяется отображение, чьи страницы мы хотим перенести. То есть в \fIaddr\fP должен быть указан адрес в области, которая была ранее отображена с помощью вызова \fBmmap\fP(2). Во\-вторых, в \fIaddr\fP указывается адрес, по которому должны быть помещены файловые страницы, заданные \fIpgoff\fP и \fIsize\fP. .P .\" This rounding is weird, and not consistent with the treatment of .\" the analogous arguments for munmap()/mprotect() and for mlock(). .\" MTK, 14 Sep 2005 Значения, указанные в \fIaddr\fP и \fIsize\fP, должны быть кратны размеру системной страницы. Если это не так, то ядро округляет \fIоба\fP значения \fIв меньшую сторону\fP до ближайшего числа, кратного размеру страницы. .P Значение аргумента \fIprot\fP должно быть 0. .P Аргумент \fIflags\fP предназначен для того же, что и в \fBmmap\fP(2), но все флаги, кроме \fBMAP_NONBLOCK\fP, игнорируются. .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" On success, \fBremap_file_pages\fP() returns 0. On error, \-1 is returned, and \fIerrno\fP is set to indicate the error. .SH ОШИБКИ .TP \fBEINVAL\fP Значение \fIaddr\fP не ссылается на допустимое отображение, созданное с флагом \fBMAP_SHARED\fP. .TP \fBEINVAL\fP .\" And possibly others from vma->vm_ops->populate() Некорректное значение в \fIaddr\fP, \fIsize\fP, \fIprot\fP или \fIpgoff\fP. .SH СТАНДАРТЫ Linux. .SH ИСТОРИЯ Linux 2.5.46, glibc 2.3.3. .SH ЗАМЕЧАНИЯ .\" commit 3ee6dafc677a68e461a7ddafc94a580ebab80735 Начиная с Linux 2.6.23, \fBremap_file_pages\fP() создаёт нелинейные отображения только для файловых систем в оперативной памяти, таких как \fBtmpfs\fP(5), hugetlbfs или ramfs. Для файловых систем с хранилищем \fBremap_file_pages\fP() не намного эффективнее чем \fBmmap\fP(2), так как рассчитывает адреса для частей файла. .SH "СМ. ТАКЖЕ" \fBgetpagesize\fP(2), \fBmmap\fP(2), \fBmmap2\fP(2), \fBmprotect\fP(2), \fBmremap\fP(2), \fBmsync\fP(2) .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства был сделан aereiae , Azamat Hackimov , Dmitriy S. Seregin , Katrin Kutepova , Lockal , 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 .