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