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

mlock(2)

HP-UX 11i Version 3: February 2007
» 

Technical documentation

» Feedback
Content starts here

 » Table of Contents

 » Index

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 multiple 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 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.

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 user does not have the MLOCK privilege.

EXAMPLES

The following call to mlock() locks the first 10 pages of the calling process in memory:

mlock(sbrk(0), 40960);

STANDARDS CONFORMANCE

mlock(): 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.