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
mlock(2) mlock(2)
NAME
mlock() - lock a segment of the process virtual address space in memory
SYNOPSIS
#include <sys/mman.h>
int mlock( const void * addr, size_t len) ;
DESCRIPTION
The mlock() system call allows the calling process to lock a segment of the process virtual address space
into memory. Any addressable segment of the process’ address space may be locked. Locked segments are
immune to all routine swapping.
addr must be a valid address in the process virtual address space. addr + len must also be a valid address
in the process virtual address space.
Locks are applied at page boundaries that encompass the range from addr to addr + len. If any address
within the range is not valid, an error is returned and no locks are applied.
munlock() or munlockall() can be used to unlock memory segments (or all memory segments)
locked with mlock().
Regardless of how many times a process locks a page, a single munlock() or munlockall() will
unlock it. An
munlock() of a page within a range specified in an mlock() call results in only the range
specified in the
munlock() being unlocked.
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 applied with mlock() 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
mlock() returns the following values:
0 Successful completion.
-1 Failure. The requested operation is not performed. errno is set to indicate the error.
ERRORS
If
mlock() fails, errno is set to one of the following values:
[ENOMEM] One or more addresses in the specified range is not valid within the process address
space.
[EAGAIN] There is not enough lockable memory in the system to satisfy the locking request.
[EINVAL] The len parameter was zero.
[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 mlock() locks the first 10 pages of the calling process in memory:
mlock(sbrk(0), 40960);
SEE ALSO
setprivgrp(1M), getprivgrp(2), mlockall(2), munlock(2), munlockall(2), plock(2).
STANDARDS CONFORMANCE
mlock(): POSIX Realtime Extensions, IEEE Std 1003.1b
HP-UX Release 11i: December 2000 − 1 − Section 2−−147
___
___