[<<Previous Entry]
[^^Up^^]
[Next Entry>>]
[Menu]
[About The Guide]
Примеры memcntl(2)
. Фиксация всех отображенных страниц
Операция MC_LOCKAS фиксирует все отображенные страницы,
удовлетворяющие критерию выбора (аргумент attr). Так как критерий
выбора равен нулю, фиксируются все страницы. addr и len не
используются этой операцией и должны быть равны нулю. Режим
фиксации - либо MCL_CURRENT, либо MCL_FUTURE, либо оба. Так как
используются оба режима, фиксируются текущее отображение и все
дальнейшие отображения.
. Освобождение всех отображенных страниц
Все страницы в адресном пространстве процесса освобождаются.
. Фиксирование текстовых страниц в адресном диапазоне
Рассматриваем на предмет фиксации все страницы в диапазоне
[addr,addr+len). Так как критерий выбора отличен от нуля, будут
зафиксированы только те страницы, которые имеют допуск на чтение и
исполнение (страницы текстового сегмента). addr должен указывать на
границу страницы, а len должен быть кратен размеру страницы.
. Фиксация страниц данных процесса
Все текущие и будущие отображения адресного пространства процесса
рассматриваются на предмет фиксации. Как указывает критерий выбора,
фиксируются только страницы с данными.
. Ожидание записи страниц в адресное пространство
Все измененные страницы адресного пространства процесса
записываются в физическую память. MS_SYNC ждет окончания записи.
ПРИМЕРЫ memcntl(2)
. Фиксация всех отображенных страниц
memcntl(0, 0, MC_LOCKAS,
MCL_CURRENT|MCL_FUTURE, 0, 0);
. Освобождение всех отображенных страниц
memcntl(0, 0, MC_UNLOCKAS, 0, 0, 0);
. Фиксирование кодовых страниц в адресном диапазоне
memcntl(addr, len, MC_LOCK, 0, PROT_READ|PROT_EXEC
memcntl(addr, len, MC_LOCK, 0, PROC_TEXT, 0);
. Фиксация страниц данных процесса
memcntl(0, 0, MC_LOCKAS, MCL_CURRENT|MCL_FUTURE,
PROC_DATA, 0);
. Ожидание записи измененных страниц адресного пространства
memcntl(0, 0, MC_SYNC, MS_SYNC, 0, 0);