xref: /netbsd-src/lib/libc/sys/madvise.2 (revision 6b1f1a07e75787f9eb34c695acf99168fa3fd04d)
1.\"	$NetBSD: madvise.2,v 1.29 2017/02/03 21:10:22 abhinav Exp $
2.\"
3.\" Copyright (c) 1991, 1993
4.\"	The Regents of the University of California.  All rights reserved.
5.\"
6.\" Redistribution and use in source and binary forms, with or without
7.\" modification, are permitted provided that the following conditions
8.\" are met:
9.\" 1. Redistributions of source code must retain the above copyright
10.\"    notice, this list of conditions and the following disclaimer.
11.\" 2. Redistributions in binary form must reproduce the above copyright
12.\"    notice, this list of conditions and the following disclaimer in the
13.\"    documentation and/or other materials provided with the distribution.
14.\" 3. Neither the name of the University nor the names of its contributors
15.\"    may be used to endorse or promote products derived from this software
16.\"    without specific prior written permission.
17.\"
18.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
19.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
22.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28.\" SUCH DAMAGE.
29.\"
30.\"	@(#)madvise.2	8.1 (Berkeley) 6/9/93
31.\"
32.Dd March 29, 2011
33.Dt MADVISE 2
34.Os
35.Sh NAME
36.Nm madvise ,
37.Nm posix_madvise
38.Nd give advice about use of memory
39.Sh LIBRARY
40.Lb libc
41.Sh SYNOPSIS
42.In sys/mman.h
43.Ft int
44.Fn madvise "void *addr" "size_t len" "int behav"
45.Ft int
46.Fn posix_madvise "void *addr" "size_t len" "int advice"
47.Sh DESCRIPTION
48The
49.Fn madvise
50system call
51allows a process that has knowledge of its memory behavior
52to describe it to the system.
53The
54.Fn posix_madvise
55interface is identical and is provided for standards conformance.
56.Pp
57The known behaviors are:
58.Bl -tag -width MADV_SEQUENTIAL
59.It Dv MADV_NORMAL
60Tells the system to revert to the default paging
61behavior.
62.It Dv MADV_RANDOM
63Is a hint that pages will be accessed randomly, and prefetching
64is likely not advantageous.
65.It Dv MADV_SEQUENTIAL
66Is a hint that pages will be accessed sequentially, from the lower address to
67higher address.
68It might cause the VM system to depress the priority of
69pages immediately preceding a given page when it is faulted in.
70.It Dv MADV_WILLNEED
71Is a hint that pages will be accessed in the near future.
72It might cause the VM system to make pages that are in a given virtual
73address range to temporarily have higher priority, and if they are in
74memory, decrease the likelihood of them being freed.
75It might immediately map the pages that are already in memory into the
76process, thereby eliminating unnecessary overhead of going through
77the entire process of faulting the pages in.
78It might or might not fault pages in from backing store.
79.It Dv MADV_DONTNEED
80Is a hint that pages will not be accessed in the near future.
81It might allow the VM system to decrease the in-memory priority
82of pages in the specified range.
83.It Dv MADV_FREE
84Gives the VM system the freedom to free pages,
85and tells the system that information in the specified page range
86is no longer important.
87.El
88.Pp
89Portable programs that call the
90.Fn posix_madvise
91interface should use the aliases
92.Dv POSIX_MADV_NORMAL , POSIX_MADV_SEQUENTIAL ,
93.Dv POSIX_MADV_RANDOM , POSIX_MADV_WILLNEED ,
94and
95.Dv POSIX_MADV_DONTNEED
96rather than the flags described above.
97.Sh RETURN VALUES
98Upon successful completion,
99a value of 0 is returned.
100Otherwise, a value of \-1 is returned and
101.Va errno
102is set to indicate the error.
103.Sh ERRORS
104.Fn madvise
105will fail if:
106.Bl -tag -width Er
107.It Bq Er EINVAL
108Invalid parameters were provided.
109.El
110.Sh SEE ALSO
111.Xr mincore 2 ,
112.Xr mprotect 2 ,
113.Xr msync 2 ,
114.Xr munmap 2 ,
115.Xr posix_fadvise 2
116.Sh STANDARDS
117The
118.Fn posix_madvise
119system call is expected to conform to the
120.St -p1003.1-2001
121standard.
122.Sh HISTORY
123The
124.Nm madvise
125system call first appeared in
126.Bx 4.4 ,
127but until
128.Nx 1.5
129it did not perform any of the requests on, or change any behavior of the
130address range given.
131The
132.Fn posix_madvise
133call was added in
134.Nx 5.0 .
135