Scroll to navigation

posix_madvise(3) Library Functions Manual 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_madvise() возвращает 0. При ошибке возвращается положительный номер ошибки.

ОШИБКИ

addr is not a multiple of the system page size or size is negative.
Неверное значение advice.
Адреса в указанном диапазоне частично или полностью лежат вне адресного пространства вызывающего.

ВЕРСИИ

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> и Kirill Rekhov <krekhov.dev@gmail.com>

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

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

28 июня 2025 г. Справочные страницы Linux (невыпущенные)