HP-UX Reference (11i v1 00/12) - 2 System Calls (vol 5)

__________________________________________________________________________________________________________________________________________________________________________________________________
__________________________________________________________________________________________________________________________________________________________________________________________________
STANDARD Printed by: Nora Chuang [nchuang] STANDARD
/build/1111/BRICK/man2/!!!intro.2
________________________________________________________________
___ ___
m
mlockall(2) mlockall(2)
NAME
mlockall() - lock a process virtual address space in memory
SYNOPSIS
#include <sys/mman.h>
int mlockall( constant int flags);
DESCRIPTION
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:
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 multi-
ple 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 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.
RETURN VALUE
mlockall() returns the following values:
0 Successful completion.
-1 Failure. The requested operation is not performed. errno is set to indicate the error.
ERRORS
If
mlockall() fails, errno is set to one of the following values:
[EINVAL] The flags field did not contain either MCL_CURRENT and/or MCL_FUTURE .
[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.
EXAMPLES
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) );
SEE ALSO
setprivgrp(1M), getprivgrp(2), mlock(2), munlock(2), munlockall(2), plock(2).
STANDARDS CONFORMANCE
mlockall(): POSIX Realtime Extensions, IEEE Std 1003.1b
Section 2148 1 HP-UX Release 11i: December 2000
___
___