HP-UX Reference (11i v1 05/09) - 2 System Calls (vol 5)

m
madvise(2) madvise(2)
NAME
madvise() - advise the system of a process’s expected paging behavior
SYNOPSIS
#include <sys/mman.h>
int madvise(
caddr_t addr,
size_t len,
int behav );
DESCRIPTION
The madvise system call permits a process to advise the system about its expected future behavior in
referencing a mapped file or an anonymous memory region. Certain implementations can use this informa-
tion to optimize the use of resources.
addr and len specify the address and length in bytes of the region to which the advice refers. For
MADV_DONTNEED
, the address and length must be contained within a successful call to
mmap() (see
mmap(2)); otherwise,
madvise() fails with an [EINVAL] error.
The behav argument is one the following flags defined in the header <sys/mman.h> :
MADV_NORMAL
Removes any previous advice and sets the default behavior. By default, the kernel tracks access
patterns on data objects and performs I/Os based on process trends (that is, sequential versus
random). Sequential trends cause larger "read-ahead" I/Os, while random accesses reduce the
amount of I/O to avoid unnecessary I/O.
MADV_RANDOM
Informs the kernel that any objects mapped in this range will be accessed in a random matter.
The kernel will read only the minimal amount of data to satisfy the user fault.
MADV_SEQUENTIAL
Informs the kernel that any objects mapped in this range will be accessed in a sequential matter.
The kernel will perform the maximum read-ahead for every fault. The kernel does not pay
attention to access patterns and trends, but instead assumes sequentiality for every access on
the object.
MADV_DONTNEED
Informs the kernel that the specified range is no longer needed by the process. This allows the
kernel to release the physical pages associated with an address range back to the system for use
by other processes.
MADV_DONTNEED is restricted to object ranges created with calls to mmap(). Attempting to
use MADV_DONTNEED on an object that was not created using a call to
mmap() will result in
[EINVAL] being returned to the caller.
MADV_WILLNEED
Will need these pages.
MADV_SPACEAVAIL
Ensure that resources are reserved.
WARNINGS
The current implementation of madvise() defines MADV_SPACEAVAIL
and MADV_WILLNEED as null
operations.
RETURN VALUE
madvise() returns the following values:
0 Successful completion.
-1 Failure. errno is set to indicate the error.
ERRORS
If madvise() fails, errno is set to one of the following values.
[EFAULT] The range specified by (addr, addr+len) is invalid for a process’s address space, or per-
mission was incorrect on the object for the behav specified.
Section 2144 Hewlett-Packard Company 1 HP-UX 11i Version 1: September 2005