[<<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, зарезервирована для будущего использования