MADVISE(2)

NAME
madvise, posix_madvise - give advice about use of memory

SYNOPSIS
#include <sys/mman.h>
int
madvise(void *addr, size_t len, int behav);
int
posix_madvise(void *addr, size_t len, int behav);

DESCRIPTION
The madvise() system call allows a process that has knowledge of its memory behavior to describe it to the system. The posix_madvise() interface is identical and is provided for standards conformance.

The possible behaviors are:

MADV_NORMAL
    No further special treatment needed.

MADV_RANDOM
    Expect random page access patterns.

MADV_SEQUENTIAL
    Expect sequential page references.

MADV_WILLNEED
    The pages will be referenced soon.

MADV_DONTNEED
    The pages will not be referenced soon.

MADV_SPACEAVAIL
    Ensure that resources are reserved.

MADV_FREE
    The pages don't contain any useful data and can be recycled.

Portable programs that call the posix_madvise() interface should use the aliases POSIX_MADV_NORMAL, POSIX_MADV_RANDOM, POSIX_MADV_SEQUENTIAL, POSIX_MADV_WILLNEED, and POSIX_MADV_DONTNEED rather than the flags described above.

RETURN VALUES
Upon successful completion, a value of 0 is returned. Otherwise, a value of -1 is returned and errno is set to indicate the error.

SEE ALSO
mincore(2), minherit(2), mprotect(2), msync(2), munmap(2)

STANDARDS
The posix_madvise() system call is expected to conform to the p1003.1-2001 standard.

HISTORY
The madvise function first appeared in 4.4BSD. The posix_madvise function first appeared in OpenBSD 4.8.