The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Интерактивная система просмотра системных руководств (man-ов)

 ТемаНаборКатегория 
 
 [Cписок руководств | Печать]

madvise (2)
  • madvise (2) ( FreeBSD man: Системные вызовы )
  • >> madvise (2) ( Русские man: Системные вызовы )
  • madvise (2) ( Linux man: Системные вызовы )
  • madvise (3) ( Solaris man: Библиотечные вызовы )
  •  

    НАЗВАНИЕ

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

    СИНТАКСИС


    #include <sys/mman.h>

    int madvise(void *start, size_t length, int advice);  

    ОПИСАНИЕ

    Системный вызов madvise выдает предложения ядру об использовании постраничного ввода/вывода в диапазоне адресов, начинающегося со start и размером length байтов. Это позволяет приложениям передавать ядру информацию об ожидаемом использовании размеченной или разделяемой области памяти так, чтобы система сама могла выбрать оптимальный метод упреждающего чтения и технологию кэширования. Этот вызов не влияет на семантику приложений, но может повлиять на их производительность. Ядро может и проигнорировать эти предложения.

    Предложенеие указывается в параметре advice; он может принимать такие значения:

    MADV_NORMAL
    Нет никаких специальных условий. Это - параметр по умолчанию.
    MADV_RANDOM
    Ожидать обращение к страницам в случайном порядке (здесь упреждающее чтение может быть менее эффективным).
    MADV_SEQUENTIAL
    Ожидать последовательного обращения к старницам (здесь страницы в заданном диапазоне могут агрессивно упреждающе считываться и быстро высвобождаться сразу после доступа к ним).
    MADV_WILLNEED
    Ожидать доступа в ближайшем будущем (здесь может быть хорошей идеей упреждающе считать несколько страниц).
    MADV_DONTNEED
    Не ожидать доступа в ближайшем будущем (приложение завершает работу с данной областью, так что система может освободить ресурсы, связываемые с ней).
     

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

    При нормальном завершении работы madvise возвращает ноль. При ошибках возвращается -1 и соответственно устанавливается errno.  

    НАЙДЕННЫЕ ОШИБКИ

    EINVAL
    значение len отрицательно, start не выровнено по страницам, advice имеет некорректное значение, или приложение пытается освободить блокированные или разделенные страницы (с MADV_DONTNEED).
    ENOMEM
    адреса в указанном диапазоне на текущий момент не распределены, или находятся вне адресного пространства процесса.
    ENOMEM
    (для MADV_WILLNEED) не хватает памяти - ошибка использования страниц.
    EIO
    (для MADV_WILLNEED) использование страниц в этой области приведет к переполнению настроек максимального размера процесса.
    EBADF
    распределение существует, но область содержит что-то, не являющееся файлом.
    EAGAIN
    ресурсы ядра были временно недоступны.
     

    ЗАМЕЧАНИЯ ПО LINUX

    Текущая реалзация Linux (2.4.0) рассматривает этот системный вызов не как указание на метод работы, а как совет, тем не менее возвращающий ошибку при невозможности исполнить то, что предполагалось сделать по этому предложению. (Смотрите выше описание раздела ОШИБКИ). Это нестандартное поведение программы.

    Реализация Linux требует, чтобы адрес start был выравненным по страницам и позволяет length иметь значение ноль. Если существуют несколько неразмеченных частей указанного диапазона адресов, то Linux-версия madvise игнорирует их и применяет вызов на остальные части (но все равно возвращает ENOMEM на системный вызов, как и должно).  

    ПРИМЕЧАНИЯ ПО ИСТОРИИ

    Функция madvise впервые появилась в 4.4BSD.  

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

    POSIX.1b (POSIX.4). POSIX 1003.1-2001 описывает posix_madvise с константами POSIX_MADV_NORMAL, и т.п., с поведением, похожим на описанное здесь. Также существует одинаковая posix_fadvise для доступа к файлу.  

    СМ. ТАКЖЕ

    getrlimit(2), mmap(2), mincore(2), mprotect(2), msync(2), munmap(2)


     

    Index

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


    Поиск по тексту MAN-ов: 




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру