posix_madvise(3)

НАИМЕНОВАНИЕ
posix_madvise - отсылает предложения по шаблонам использования памяти

БИБЛИОТЕКА
Стандартная библиотека языка C (libc, -lc)

ОБЗОР
#include <sys/mman.h>

int posix_madvise(size_t size;
                  void addr[size], size_t size, int advice);

    Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

posix_madvise():
    _POSIX_C_SOURCE >= 200112L

ОПИСАНИЕ
The posix_madvise() function allows an application to advise the system about its expected patterns of usage of memory in the address range starting at addr and continuing for size bytes. The system is free to use this advice in order to improve the performance of memory accesses (or to ignore the advice altogether), but calling posix_madvise() shall not affect the semantics of access to memory in the specified range.

В аргументе advice указывается одно из следующих значений:

POSIX_MADV_NORMAL
    Приложение не даёт каких-либо предложений о том, как будет использована память в указанном диапазоне. Поведение по умолчанию.

POSIX_MADV_SEQUENTIAL
    Приложение будет последовательно обращаться к памяти в указанном диапазоне адресов, от младшего адреса к старшему. Следовательно, все страницы в этом диапазоне можно заранее прочитать и освободить сразу после доступа к ним.

POSIX_MADV_RANDOM
    Приложение будет обращаться по указанному диапазону адресов в случайном порядке. То есть упреждающее чтение может быть менее эффективным, чем обычно.

POSIX_MADV_WILLNEED
    Приложение обратится по указанному диапазону адресов в в ближайшем будущем. То есть от упреждающего чтения можно выиграть.

POSIX_MADV_DONTNEED
    Приложение не будет обращаться по указанному диапазону адресов в в ближайшем будущем.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При успешном выполнении posix_madvise() возвращает 0. При ошибке возвращается положительный номер ошибки.

ОШИБКИ

EINVAL
    addr is not a multiple of the system page size or size is negative.

EINVAL
    Неверное значение advice.

ENOMEM
    Адреса в указанном диапазоне частично или полностью лежат вне адресного пространства вызывающего.

ВЕРСИИ
POSIX.1 permits an implementation to generate an error if size is 0. On Linux, specifying size as 0 is permitted (as a successful no-op).

В glibc эта функция реализована через вызов madvise(2). Однако, начиная с glibc 2.6, POSIX_MADV_DONTNEED для ничего не делается, так как соответствующее значение в madvise(2), MADV_DONTNEED, имеет разрушительную семантику.

СТАНДАРТЫ
POSIX.1-2008.

ИСТОРИЯ
glibc 2.2. POSIX.1-2001.

СМОТРИТЕ ТАКЖЕ
madvise(2), posix_fadvise(2)

ПЕРЕВОД
Русский перевод этой страницы руководства разработал(и) Alexey, Azamat Hackimov <azamat.hackimov@gmail.com>, kogamatranslator49 <r.podarov@yandex.ru>, Darima Kogan <silverdk99@gmail.com>, Max Is <ismax799@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>

Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

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