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.
Note:
The full POSIX implementation for this function was added in the QNX Neutrino Core OS 6.3.2.
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 the
limit on the amount of memory that the process may lock.
- A memory region in the address range specified by addr and len is marked as
PROT_NONE, meaning it can't be accessed.
- 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:
POSIX 1003.1 MLR
Safety: |
|
Cancellation point |
No |
Interrupt handler |
No |
Signal handler |
Yes |
Thread |
Yes |