Man page - remap_file_pages(2)

Packages contains this manual

Available languages:

en fr ja ru ro

Manual

remap_file_pages

НАИМЕНОВАНИЕ
БИБЛИОТЕКА
ОБЗОР
ОПИСАНИЕ
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
ОШИБКИ
СТАНДАРТЫ
ИСТОРИЯ
ПРИМЕЧАНИЯ
СМОТРИТЕ ТАКЖЕ
ПЕРЕВОД

НАИМЕНОВАНИЕ

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 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков .