Jump to content United States-English
HP.com Home Products and Services Support and Drivers Solutions How to Buy
» Contact HP
More options
HP.com home
HP-UX Reference > M


HP-UX 11i Version 3: February 2007

Technical documentation

» Feedback
Content starts here

 » Table of Contents

 » Index


mlockall() — lock a process virtual address space in memory


#include <sys/mman.h>

int mlockall( const int flags);


The mlockall() system call allows the calling process to lock its entire virtual address space into memory, making it immune to all routine swapping.

flags may be one or both of the following:


Lock the current process virtual address space. All addressable pages of the address space are locked.


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

The user must have the MLOCK privilege.

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.

Security Restrictions

Some or all of the actions associated with this system call require the MLOCK privilege. Processes owned by the superuser have this privilege. Processes owned by other users may have this privilege, depending on system configuration. See privileges(5) for more information about privileged access on systems that support fine-grained privileges.


mlockall() returns the following values:


Successful completion.


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:


The flags field did not contain either MCL_CURRENT and/or MCL_FUTURE.


There is not enough lockable memory in the system to satisfy the locking request.


The user does not have 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) );


mlockall(): POSIX Realtime Extensions, IEEE Std 1003.1b

Printable version
Privacy statement Using this site means you accept its terms Feedback to webmaster
© 1983-2007 Hewlett-Packard Development Company, L.P.