munlock.2 (2010 09)
m
munlock(2) munlock(2)
NAME
munlock() - unlock a segment of the process virtual address space
SYNOPSIS
#include <sys/mman.h>
int munlock( const void * addr, size_t len) ;
DESCRIPTION
The munlock() system call allows the calling process to unlock a segment of the process virtual address
space that may have been previously locked with
mlock() or mlockall(). Upon successful comple-
tion of the
munlock(), pages within the specified segment are subject to routine paging and/or swap-
ping.
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.
Pages are unlocked at page boundaries that encompass the range from addr to addr+len. If any address
within the range is not a valid part of the process virtual address space, an error is returned and no
unlocks are performed. However, no error is reported for valid pages within the range that are not
already locked, since their state at the completion of the
munlock() call is as desired.
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 mul-
tiple processes, a page remains locked until the last lock is removed from that page.
The effective user ID of the calling process must be that of a user with 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.
RETURN VALUE
munlock() returns the following values:
0 Successful completion.
-1 Failure. The requested operation is not performed. errno is set to indicate the error.
ERRORS
If
munlock() 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.
[EINVAL] The
len parameter was zero.
[EPERM] The effective user ID of the calling process is not that of a user with the
MLOCK
privilege.
EXAMPLES
The following call to
munlock() unlocks the first 10 pages of the calling process address space:
munlock(sbrk(0), 40960);
SEE ALSO
setprivgrp(1M), getprivgrp(2), mlock(2), mlockall(2), munlockall(2), plock(2), privileges(5).
STANDARDS CONFORMANCE
munlock(): POSIX Realtime Extensions, IEEE Std 1003.1b
HP-UX 11i Version 3: September 2010 − 1 − Hewlett-Packard Company 1