mlock()

Заблокировать диапазон адресного пространства процесса в физической памяти

Прототип:

#include <sys/mman.h>
int mlock( const void *addr,
size_t len );

Аргументы:

addr
Начальный адрес диапазона адресного пространства процесса.
len
Количество блокируемой памяти в байтах.

Библиотека:

libc

Описание:

Функция mlock() блокирует диапазон адресного пространства процесса, начиная с адреса, заданного параметром addr, и длиной, заданной параметром len. Адрес, заданный параметром addr, должен быть кратен значению PAGESIZE, которое зависит от целевой платформы.


Note: Вызывающему процессу нужны права суперпользователя для вызова mlock().

Успешный вызов функции mlock() гарантирует, что страницы являются резидентными в памяти (т.е. адреса всегда находятся в физической памяти).

Возвращаемое значение:

0
Успешное завершение.
-1
Возникла ошибка. Код ошибки записан в errno.

Коды ошибок:

ENOMEM
EAGAIN
Часть или вся память, идентифицированная операцией, не может быть заблокирована при выполнении вызова.
EPERM
Вызывающий процесс не имеет прав суперпользователя.

Классификация:

POSIX 1003.1 Range Memory Locking

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

mlockall(), mmap(), munlock(), munlockall()




Предыдущий раздел: Описание API системной библиотеки