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