Lock all of a process's address space
int mlockall(int flags);
- Flags that indicate which pages to lock; one or more of the following
- Lock the pages currently mapped into the address
space of the process.
- Lock the pages that become mapped into the address
space of the process in the future, when the mappings are established.
Use the -l c option to
to link against this library.
This library is usually included automatically.
The mlockall() function causes all of the pages mapped by the
address space of a process to be locked and made memory-resident until
unlocked, or the process exits or executes another process.
The pages that are locked depend on the flags argument.
||The full POSIX implementation for this function was added in the QNX Neutrino Core OS 6.3.2.|
Memory-resident is a term used to indicate that the addresses always reside in physical memory.
For more information, see
in the Process Manager chapter of the System Architecture guide.
You have to be a superuser to
lock pages. Follow either of the following approaches when attempting
to lock pages:
- Tightly controlled approach
- Lock the pages one by one, by calling mmap()
and then mlock().
- Global approach
- Lock all pages at the same time, by doing one of the following:
- Call mlockall(MCL_FUTURE), followed by one or more calls
- Optionally call mmap(), and then call
- An error occurred (errno
- Some or all of the memory identified by the operation couldn't be locked when the call was made.
- The flags argument is zero.
- Locking all of the pages currently mapped into the address
space of the process would exceed an implementation-defined limit on the
amount of memory that the process may lock. lock. This
implementation-defined limit is set by
- The calling process doesn't have the appropriate privilege to
perform the requested operation.
POSIX 1003.1 ML
in the Process Manager chapter of the System Architecture guide