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.
    
  
 
  
 
- 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 |