mlock()
Lock a range of process address space in physical memory
Synopsis:
#include <sys/mman.h> int mlock(const void * addr, size_t len);
Arguments:
- addr
- The starting address for the range of process address space.
- len
- The amount of the memory to lock, in bytes. There's no limit on the amount of memory that a process may lock, other than the amount of physical memory in the system.
Library:
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
Description:
The mlock() function locks a range of process address space starting at address addr and continuing for length len. The addr must be a multiple of PAGESIZE, which depends on the target platform.
In order to lock memory, your process must have the PROCMGR_AID_MEM_LOCK ability enabled. For more information, see procmgr_ability() .
The successful call to mlock() function ensures that the pages are memory-resident (i.e. the addresses always reside in physical memory). For more information, see Locking memory in the Process Manager chapter of the System Architecture guide.
Returns:
- 0
- Success.
- -1
- An error occurred (errno is set).
Errors:
- ENOMEM
-
- Some or all of the address range specified by the addr and len arguments doesn't correspond to valid mapped pages in the address space of the process.
- Locking the pages mapped by the specified range would exceed an implementation-defined limit on the amount of memory that the process may lock. This implementation-defined limit is set by RLIMIT_MEMLOCK rlimit.
- EAGAIN
- Some or all of the memory identified by the operation couldn't be locked when the call was made.
- EPERM
- The calling process doesn't have the required permission; see procmgr_ability() .
Classification:
Safety: | |
---|---|
Cancellation point | No |
Interrupt handler | No |
Signal handler | Yes |
Thread | Yes |