MADVISE(2) BSD System Calls Manual MADVISE(2)
madvise, posix_madvise -- give advice about use of memory
madvise(void *addr, size_t len, int behav);
posix_madvise(void *addr, size_t len, int behav);
The madvise() system call allows a process that has knowledge of its mem-
ory behavior to describe it to the system. The posix_madvise() interface
has the same effect, but returns the error value instead of only setting
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 recy-
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
The madvise() function returns the value 0 if successful; otherwise the
value -1 is returned and the global variable errno is set to indicate the
If successful, the posix_madvise() function will return zero. Otherwise
an error number will be returned to indicate the error.
mincore(2), minherit(2), mprotect(2), msync(2), munmap(2)
The posix_madvise() system call conforms to IEEE Std 1003.1-2008
The madvise() function first appeared in 4.4BSD. The posix_madvise()
function first appeared in OpenBSD 4.8.
The MADV_WILLNEED behavior is ignored. The MADV_SPACEAVAIL behavior is
not implemented and will always fail.
BSD April 28, 2017 BSD