Provided by: manpages-ru-dev_4.27.0-1_all 

НАИМЕНОВАНИЕ
remap_file_pages - создаёт нелинейное файловое отображение
БИБЛИОТЕКА
Стандартная библиотека языка C (libc, -lc)
ОБЗОР
#define _GNU_SOURCE /* Смотрите feature_test_macros(7) */
#include <sys/mman.h>
[[deprecated]] int remap_file_pages(void addr[.size], size_t size,
int prot, size_t pgoff, int flags);
ОПИСАНИЕ
Замечание: данный системный вызов, начиная с Linux 3.16, устарел. В Linux 4.0 реализация была заменена на
более медленную эмуляцию ядром. В приложениях, где он используется, нужно применять альтернативные
вызовы. Данное изменение было сделано из-за сложности кода ядра этого системного вызова, и считается, что
им почти никто или вообще никто не пользуется. Какое-то время он использовался в приложениях баз данных
на 32-разрядных системах, но этих вариантов использования на 64-разрядных системах замечено не было.
Системный вызов remap_file_pages() используется для создания нелинейного отображения, то есть
отображения, в котором страницы файла отображаются в память непоследовательно. Преимущество использования
remap_file_pages() по сравнению с повторением вызовов mmap(2) в том, что первый не требует от ядра
создания дополнительных структур данных VMA (областей виртуальной памяти).
Для создания нелинейного отображения выполните следующее:
1. Создайте отображение (пока линейное) с помощью mmap(2). Данное отображение должно создаваться с флагом
MAP_SHARED.
2. Выполните переупорядочивание соответствия между страницами отображения и страницами файла с помощью
одного или нескольких вызовов remap_file_pages(). Возможно отображать одну страницу файла в несколько
мест отображаемой области.
В аргументах pgoff и size указывается область файла, которая будет перенесёна в отображение: в pgoff
задаётся смещение в файле, измеряемое в размерах системных страниц; в size задаётся длина области в
байтах.
Аргумент addr предназначен для двух целей. Во-первых, им определяется отображение, чьи страницы мы хотим
перенести. То есть в addr должен быть указан адрес в области, которая была ранее отображена с помощью
вызова mmap(2). Во-вторых, в addr указывается адрес, по которому должны быть помещены файловые страницы,
заданные pgoff и size.
Значения, указанные в addr и size, должны быть кратны размеру системной страницы. Если это не так, то
ядро округляет оба значения в меньшую сторону до ближайшего числа, кратного размеру страницы.
Значение аргумента prot должно быть 0.
Аргумент flags предназначен для того же, что и в mmap(2), но все флаги, кроме MAP_NONBLOCK, игнорируются.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
On success, remap_file_pages() returns 0. On error, -1 is returned, and errno is set to indicate the
error.
ОШИБКИ
EINVAL Значение addr не ссылается на допустимое отображение, созданное с флагом MAP_SHARED.
EINVAL Некорректное значение в addr, size, prot или pgoff.
СТАНДАРТЫ
Linux.
ИСТОРИЯ
Linux 2.5.46, glibc 2.3.3.
ПРИМЕЧАНИЯ
Начиная с Linux 2.6.23, remap_file_pages() создаёт нелинейные отображения только для файловых систем в
оперативной памяти, таких как tmpfs(5), hugetlbfs или ramfs. Для файловых систем с хранилищем
remap_file_pages() не намного эффективнее чем mmap(2), так как рассчитывает адреса для частей файла.
СМОТРИТЕ ТАКЖЕ
getpagesize(2), mmap(2), mmap2(2), mprotect(2), mremap(2), msync(2)
ПЕРЕВОД
Русский перевод этой страницы руководства разработал(и) aereiae <aereiae@gmail.com>, Azamat Hackimov
<azamat.hackimov@gmail.com>, Dmitriy S. Seregin <dseregin@59.ru>, Katrin Kutepova
<blackkatelv@gmail.com>, Lockal <lockalsash@gmail.com>, Yuri Kozlov <yuray@komyakino.ru>, Баринов
Владимир, Иван Павлов <pavia00@gmail.com> и Kirill Rekhov <krekhov.dev@gmail.com>
Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной
лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или
более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.
Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом
разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских
переводчиков.
Справочные страницы Linux 6.9.1 2 мая 2024 г. remap_file_pages(2)