mlockall() - lock a process virtual address space in memory
int mlockall( constant int flags);
The mlockall() system call allows the calling process to lock its
entire virtual address space into memory, making it immune to all
flags may be one or both of the following:
MCL_CURRENT Lock the current process virtual address
space. All addressable pages of the address
space are locked.
MCL_FUTURE Lock any future additions to the process
virtual address space.
Note that MCL_FUTURE does not imply MCL_CURRENT.
munlockall() or munlock() can be used to unlock all or a portion of
the address space locked with mlockall(). A single call to
munlockall() removes all locks from the process virtual address space.
An munlock() call results in only the specified pages being unlocked.
Regardless of how many times a process locks a page, a single
munlock() or munlockall() will unlock it.
When memory is shared by multiple processes and mlocks are applied to
the same physical page by multiple processes, a page remains locked
until the last lock is removed from that page.
Locks and MCL_FUTURE applied with mlockall() are not inherited by a
The effective user ID of the calling process must be a superuser or
the user must be a member of a group that has the MLOCK privilege (see
getprivgrp(2) and setprivgrp(1M)).
Although plock() and the mlock() family of functions may be used
together in an application, each may affect the other in unexpected
ways. This practice is not recommended.
mlockall() returns the following values:
Hewlett-Packard Company - 1 - HP-UX Release 11i: November 2000
0 Successful completion.
-1 Failure. The requested operation is not performed. errno
is set to indicate the error.
If mlockall() fails, errno is set to one of the following values:
[EINVAL] The flags field did not contain either MCL_CURRENT
[EAGAIN] There is not enough lockable memory in the system
to satisfy the locking request.
[EPERM] The effective user ID of the calling process is
not a superuser and the user does not belong to a
group that has the MLOCK privilege.
The following call to mlockall() locks the entire process virtual
address space in memory and ensures that any future additions to the
address space will also be locked in memory:
mlockall( (MCL_CURRENT | MCL_FUTURE) );
setprivgrp(1M), getprivgrp(2), mlock(2), munlock(2), munlockall(2),
mlockall(): POSIX Realtime Extensions, IEEE Std 1003.1b
Hewlett-Packard Company - 2 - HP-UX Release 11i: November 2000