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


HP-UX 11i Version 3: February 2007

Technical documentation

» Feedback
Content starts here

 » Table of Contents

 » Index


madvise() — advise the system of a process's expected paging behavior


#include <sys/mman.h> int madvise( caddr_t addr, size_t len, int behav );


The madvise system call permits a process to advise the system about its expected future behavior in referencing a mapped file, an anonymous memory region, or a shared memory region. Certain implementations can use this information 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)) or a successful call to shmat() (see shmat(2)); otherwise, madvise() fails with an [EINVAL] error.

The behav argument is one the following flags defined in the header <sys/mman.h>:


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.


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.


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.


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() and shmat(). Attempting to use MADV_DONTNEED on an object that was not created using a call to mmap() or shmat() will result in [EINVAL] being returned to the caller.


Will need these pages.


Ensure that resources are reserved.


The current implementation of madvise() defines MADV_SPACEAVAIL and MADV_WILLNEED as null operations.


madvise() returns the following values:


Successful completion.


Failure. errno is set to indicate the error.


If madvise() fails, errno is set to one of the following values.


The range specified by (addr, addr+len) is invalid for a process's address space, or permission was incorrect on the object for the behav specified.


behav contains an invalid value, or addr is not a multiple of the page size as returned by the system call sysconf(_SC_PAGE_SIZE).


The address range specified by addr and len was not created by a successful call to mmap() or shmat().


madvise() was developed by HP and OSF.


madvise(): AES, SVID3

Printable version
Privacy statement Using this site means you accept its terms Feedback to webmaster
© 1983-2007 Hewlett-Packard Development Company, L.P.