Linux repositories inspector

posix_madvise(3) - Russkiy

Linux
2017-09-15

man-pages-ru

Russian man pages from the Linux Documentation Project

manpages-dev

Manual pages about using GNU/Linux for development

man-pages

Linux kernel and C library user-space interface documentation

ИМЯ

posix_madvise - отсылает предложения по шаблонам использования памяти

ОБЗОР

#include <sys/mman.h>

int posix_madvise(void *addr, size_t len, int advice);
Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):
posix_madvise():

_POSIX_C_SOURCE >= 200112L

ОПИСАНИЕ

Функция posix_madvise() позволяет приложению показывать системе свои ожидания при использовании памяти в диапазоне начиная с адреса addr и длиной len байт. Система может использовать это предложение для улучшения производительности доступа к памяти (или игнорировать), но вызов posix_madvise() не повлияет на семантику доступа к памяти в указанном диапазоне.
В аргументе advice указывается одно из следующих значений:
POSIX_MADV_NORMAL
Приложение не даёт каких-либо предложений о том, как будет использована память в указанном диапазоне. Поведение по умолчанию.
POSIX_MADV_SEQUENTIAL
Приложение будет последовательно обращаться к памяти в указанном диапазоне адресов, от младшего адреса к старшему. Следовательно, все страницы в этом диапазоне можно заранее прочитать и освободить сразу после доступа к ним.
POSIX_MADV_RANDOM
Приложение будет обращаться по указанному диапазону адресов в случайном порядке. То есть упреждающее чтение может быть менее эффективным, чем обычно.
POSIX_MADV_WILLNEED
Приложение обратится по указанному диапазону адресов в в ближайшем будущем. То есть от упреждающего чтения можно выиграть.
POSIX_MADV_DONTNEED
Приложение не будет обращаться по указанному диапазону адресов в в ближайшем будущем.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

При успешном выполнении posix_madvise() возвращает 0. При ошибке возвращается положительный номер ошибки.

ОШИБКИ

EINVAL Значение addr не кратно размеру системной страницы или значение len отрицательно.
EINVAL Неверное значение advice.
ENOMEM Адреса в указанном диапазоне частично или полностью лежат вне адресного пространства вызывающего.

ВЕРСИИ

Поддержка posix_madvise() появилась в glibc 2.2.

СООТВЕТСТВИЕ СТАНДАРТАМ

POSIX.1-2001.

ЗАМЕЧАНИЯ

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

СМОТРИТЕ ТАКЖЕ

⇧ Top