[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 Параметры memcntl(2)

memcntl(2) обеспечивает управление адресным пространством,
определенным с помощью отображения диапазона виртуальных адресов
[addr,addr+len). Адресный диапазон должен быть кратен размеру
страницы, а иначе memcntl(2) вернет -1 и установит errno равным
EINVAL. Выполняемая операция определяется аргументом cmd. Символьные
имена для cmd описаны в <sys/mman.h> следующим образом:
MC_LOCK   Прерывания   из-за    отсутствия    страниц    могут    быть
          минимизированы  (а  иногда  исключены)  с  помощью  фиксации
          отображений диапазона  в физическую память. MC_LOCK приводит
          к фиксации  страниц из  диапазона [addr,addr+len)  в памяти.
          Если доступные  по изменению  PRIVATE-страницы  в  диапазоне
          [addr,addr+len) изменяются, фиксация переносится на копии.
MC_LOCKAS Приводит к  фиксации всех  страниц  адресного  пространства,
          отображенного в  память. addr и len не используются и должны
          быть равны  нулю. Операция  MC_LOCKAS позволяет пользователю
          задать режим  фиксации:  MCL_CURRENT  фиксирует  отображение
          адресного пространства  в его  текущем состоянии, MCL_FUTURE
          фиксирует все  дальнейшие отображения  или одновременно  оба
          режима. Если  задан режим  MCL_FUTURE и  не хватает  памяти,
          отображение будет неудачным.
MC_UNLOCK Освобождает страницы в диапазоне [addr,addr+len).
MC_UNLOCKAS Снимает  фиксацию адресного  пространства и  фиксацию всех
          страниц в адресном пространстве.
MC_SYNC   Синхронизирует отображение  диапазона адресов  с  постоянной
          памятью  (permanent   storage).   Операция   MC_SYNC   может
          завершиться  немедленно   после  запуска   операции   записи
          (MS_ASYNC); не  завершаться, пока не закончатся все операции
          записи (MS_SYNC);  или сделать  недействительными  кэш-копии
          (MS_INVALIDATE), так что дальнейшие ссылки на страницы будут
          получены  из   постоянной   памяти.   msync(3C)   использует
          memcntl(2) с этой командой.

Параметр attr используется как дополнительный критерий выбора для
отображения диапазона адресов. Например, выбрать из данного диапазона
адресов только те страницы, которые доступны по изменению
(PROT_WRITE). Следующие значения attr могут быть использованы
одновременно с помощью побитового ИЛИ:
SHARED    Страницы, используемые совместно.
PRIVATE   Страницы, используемые одним пользователем. Первая запись на
          PRIVATE-страницу  создаст   PRIVATE-копию  этой  страницы  и
          перенесет фиксацию на копию.
PROT_READ Страницы с допуском по чтению.
PROT_WRITE  Страницы с допуском по изменению.
PROT_EXEC Страницы с допуском по исполнению.
PROC_TEXT Все PRIVATE-страницы с допуском по чтению и исполнению.
PROC_DATA Все PRIVATE-страницы с допуском по изменению.
0         Операция не  должна ограничиваться  никакими дополнительными
          критериями выбора.
                         ПАРАМЕТРЫ memcntl(2)
addr
       диапазон адресов, к которому применяется операция
len

cmd    выполняемая операция

           MC_LOCK
           MC_LOCKAS
           MC_UNLOCK
           MC_UNLOCKAS
           MC_SYNC

arg    дальнейшее уточнение операции

                              MCL_CURRENT
           MC_LOCKAS
                              MCL_FUTURE

                              MS_ASYNC
           MC_SYNC            MS_SYNC
                              MS_INVALIDATE

attr   добавочные ограничения на операцию

           SHARED
           PRIVATE
           PROT_READ
           PROT_WRITE
           PROT_EXEC
           PROC_TEXT
           PROC_DATA

mask   должна быть равна 0, зарезервирована для будущего использования