xref: /freebsd/share/man/man9/vm_page_alloc.9 (revision 3becbb252c733d3d09172a34d7d00d27f84d0e86)
1.\"
2.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. All rights reserved.
3.\"
4.\" Redistribution and use in source and binary forms, with or without
5.\" modification, are permitted provided that the following conditions
6.\" are met:
7.\" 1. Redistributions of source code must retain the above copyright
8.\"    notice(s), this list of conditions and the following disclaimer as
9.\"    the first lines of this file unmodified other than the possible
10.\"    addition of one or more copyright notices.
11.\" 2. Redistributions in binary form must reproduce the above copyright
12.\"    notice(s), this list of conditions and the following disclaimer in the
13.\"    documentation and/or other materials provided with the distribution.
14.\"
15.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) ``AS IS'' AND ANY
16.\" EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18.\" DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY
19.\" DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20.\" (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
21.\" SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
22.\" CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
25.\" DAMAGE.
26.\"
27.\" $FreeBSD$
28.\"
29.Dd July 13, 2001
30.Dt VM_PAGE_ALLOC 9
31.Os
32.Sh NAME
33.Nm vm_page_alloc
34.Nd "allocates a page for the object and index"
35.Sh SYNOPSIS
36.In sys/param.h
37.In vm/vm.h
38.In vm/vm_page.h
39.Ft vm_page_t
40.Fn vm_page_alloc "vm_object_t object" "vm_pindex_t pindex" "int page_req"
41.Sh DESCRIPTION
42The
43.Fn vm_page_alloc
44function allocates a page for
45.Fa pindex
46in the VM object
47.Fa object .
48It is assumed that a page has not already been allocated for
49.Fa pindex
50and
51.Fa object .
52.Pp
53The
54.Fn vm_page_alloc
55function will not block.
56.Pp
57Its arguments are:
58.Bl -tag -width ".Fa page_req"
59.It Fa object
60The VM object to allocate the page for.
61.It Fa pindex
62The index of the page that should be allocated.
63.It Fa page_req
64A flag indicating how the page should be allocated.
65.Bl -tag -width ".Dv VM_ALLOC_INTERRUPT"
66.It Dv VM_ALLOC_NORMAL
67The page should be allocated with no special treatment.
68.It Dv VM_ALLOC_SYSTEM
69The page can be allocated even if the buffer cache queue is empty
70and the free count is above the interrupt reserved water mark.
71This should be used only when the system really needs the page.
72.It Dv VM_ALLOC_INTERRUPT
73.Fn vm_page_alloc
74is being called during an interrupt and therefore the cache cannot
75be accessed.
76The page will only be returned successfully if the free count is greater
77than zero.
78.It Dv VM_ALLOC_ZERO
79The same as
80.Dv VM_ALLOC_NORMAL
81except the page returned is zeroed.
82.El
83.El
84.Sh RETURN VALUES
85A
86.Vt vm_page_t
87is returned if successful; otherwise,
88.Dv NULL
89is returned.
90.Sh NOTES
91The pager process is always upgraded to
92.Dv VM_ALLOC_SYSTEM
93unless
94.Dv VM_ALLOC_INTERRUPT
95is set.
96.Sh AUTHORS
97This man page was written by
98.An Chad David Aq davidc@acns.ab.ca .
99