| MADVISE(2) | System Calls Manual | MADVISE(2) |
madvise,
posix_madvise — give advice
about use of memory
#include
<sys/mman.h>
int
madvise(void
*addr, size_t len,
int behav);
int
posix_madvise(void
*addr, size_t len,
int behav);
The
madvise()
system call allows a process that has knowledge of its memory behavior to
describe it to the system. The posix_madvise()
interface has the same effect, but returns the error value instead of only
setting errno.
The possible behaviors are:
MADV_NORMALMADV_RANDOMMADV_SEQUENTIALMADV_WILLNEEDMADV_DONTNEEDMADV_SPACEAVAILMADV_FREEPortable 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.
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
error.
If successful, the posix_madvise()
function will return zero. Otherwise an error number will be returned to
indicate the error.
madvise() will fail if:
mimmutable(2), minherit(2), mprotect(2), msync(2), munmap(2)
The posix_madvise() system call conforms
to IEEE Std 1003.1-2008
(“POSIX.1”).
The EPERM failure conditions described are
an extension to this specification.
The madvise() function first appeared in
SunOS 4.0 and has been available since OpenBSD 2.7.
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.
| January 21, 2024 | openbsd |