munlock
разрешает страничный обмен в областях памяти, указание на которую начинается
с адреса
addr
длиной
len
байтов. Все страницы, содержащие часть заданной области памяти,
могут быть помещены ядром во внешнюю область подкачки с помощью вызова
munlock.
Блокировка памяти не попадает в стек, т.е., страницы,
блокированные несколько раз при помощи функций
mlock
или
mlockall,
будут разблокированы одним вызовом
munlock
(с соответствующими параметрами) или
munlockall.
Страницы, помещенные в несколько областей памяти или принадлежащие
нескольким процессам, будут заблокированы в памяти до тех пор, пока
они заблокированы хотя бы в одной из областей памяти или
одним процессом.
В POSIX-системах, в которых доступны
mlock
и
munlock,
в <unistd.h> задана константа
_POSIX_MEMLOCK_RANGE ,
и значение
PAGESIZE
в <limits.h> задает количество байтов в странице.
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
При удачном завершении вызова возвращаемое значение равно нулю. При ошибке возвращается
-1, переменной
errno
присваивается номер ошибки, и ни с одной из блокировок
памяти ничего не произойдет.
НАЙДЕННЫЕ ОШИБКИ
ENOMEM
Часть заданной области памяти не соответствует области
памяти процесса.