mlock, munlock - Locks or unlocks a specified region in
int mlock ( const void *addr, size_t len);
int munlock ( const void *addr, size_t len);
Realtime Library (librt.so, librt.a)
A pointer to the starting address of the region to lock or
unlock. The addr argument must be a multiple of the page
size returned by the sysconf system call. The size of the
memory region to lock or unlock. The value of len is
rounded up to a multiple of the page size before decrementing
The mlock and munlock functions lock and unlock whole
pages containing any part of the process address space
starting at addr and continuing for len bytes.
The mlock function guarantees all whole pages mapped by
the range addr to addr+len-1 (inclusive) to be memory resident.
(The area locked is the same as if the len argument
were rounded up to a multiple of the page size before
decrementing by 1.)
The locked area remains locked until unlocked with a call
to the munlock function, until the process calls the exec
function, until an address space associated with the lock
is unmapped, or until the process terminates. A lock is
not inherited across a fork or an exec.
The mlock function unlocks whole pages previously mapped
by the range addr to addr+len-1 (inclusive), regardless of
how many times the mlock function was called by the process
for any pages within the specified range.
A call to the munlock function does not affect pages that
may be mapped into another process's address space or
locked by another process.
You must have superuser privileges to call the mlock or
On a successful call to the mlock function, a value of 0
(zero) is returned and the region becomes locked and memory
resident. On an unsuccessful call, a value of -1 is
returned, no changes are made to any locks in the process
address space, and errno is set to indicate that an error
On a successful call to the munlock function, a value of 0
(zero) is returned and the memory is unlocked with respect
to the process's address space. On an unsuccessful call, a
value of -1 is returned, none of the memory is unlocked,
and errno is set to indicate that an error occurred.
The mlock and munlock functions fail under the following
conditions: The addr argument is not a multiple of the
page size returned by sysconf. Some or all of the address
range specified by the addr and len arguments does not
correspond to valid mapped pages in the process's address
space. For the mlock function, locking the pages mapped by
the specified range would exceed an implementation-defined
limit on the amount of memory that the process may lock.
If any of the following conditions occur, the mlock function
fails: Some or all of the memory identified by the
operation could not be locked when the call was made. The
calling process does not have the appropriate privileges
to perform the requested operation.
Functions: exec(2), _exit(2), fork(2), munmap(2),
Guide to Realtime Programming
[ Back ]