Manual Reference Pages - POSIX_MADVISE (2)
- give advice about use of memory
madvise void *addr size_t len int behav
posix_madvise void *addr size_t len int behav
allows a process that has knowledge of its memory behavior
to describe it to the system.
interface is identical, except it returns an error number on error and does
and is provided for standards conformance.
The known behaviors are:
Tells the system to revert to the default paging
Is a hint that pages will be accessed randomly, and prefetching
is likely not advantageous.
Causes the VM system to depress the priority of
pages immediately preceding a given page when it is faulted in.
Causes pages that are in a given virtual address range
to temporarily have higher priority, and if they are in
memory, decrease the likelihood of them being freed.
the pages that are already in memory will be immediately mapped into
the process, thereby eliminating unnecessary overhead of going through
the entire process of faulting the pages in.
This WILL NOT fault
pages in from backing store, but quickly map the pages already in memory
into the calling process.
Allows the VM system to decrease the in-memory priority
of pages in the specified address range.
Consequently, future references to this address range are more likely
to incur a page fault.
Gives the VM system the freedom to free pages,
and tells the system that information in the specified page range
is no longer important.
This is an efficient way of allowing
to free pages anywhere in the address space, while keeping the address space
The next time that the page is referenced, the page might be demand
zeroed, or might contain the data that was there before the
References made to that address space range will not make the VM system
page the information back in from backing store until the page is
Request that the system not flush the data associated with this map to
physical backing store unless it needs to.
Typically this prevents the
file system update daemon from gratuitously writing pages dirtied
by the VM system to physical disk.
Note that VM/file system coherency is
always maintained, this feature simply ensures that the mapped data is
only flush when it needs to be, usually by the system pager.
This feature is typically used when you want to use a file-backed shared
memory area to communicate between processes (IPC) and do not particularly
need the data being stored in that area to be physically written to disk.
With this feature you get the equivalent performance with mmap that you
would expect to get with SysV shared memory calls, but in a more controllable
and less restrictive manner.
However, note that this feature is not portable
across UNIX platforms (though some may do the right thing by default).
For more information see the MAP_NOSYNC section of
Undoes the effects of MADV_NOSYNC for any future pages dirtied within the
The effect on pages already dirtied is indeterminate - they
may or may not be reverted.
You can guarantee reversion by using the
Region is not included in a core file.
Include region in a core file.
Informs the VM system this process should not be killed when the
swap space is exhausted.
The process must have superuser privileges.
This should be used judiciously in processes that must remain running
for the system to properly function.
Portable programs that call the
interface should use the aliases
rather than the flags described above.
.Rv -std madvise
system call will fail if:
argument is not valid.
The virtual address range specified by the
arguments is not valid.
was specified and the process does not have superuser privileges.
interface conforms to
system call first appeared in
BSD 4.4 .
Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.