xref: /freebsd/share/man/man9/vm_page_grab.9 (revision 00cf6892bb6ce086f0f25723d3a7c47b6a9dd409)
121642577SAlfred Perlstein.\"
221642577SAlfred Perlstein.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. All rights reserved.
3*00cf6892SKonstantin Belousov.\" Copyright (c) 2013 The FreeBSD Foundation
4*00cf6892SKonstantin Belousov.\"
5*00cf6892SKonstantin Belousov.\" Portions of this documentation were written by Konstantin Belousov
6*00cf6892SKonstantin Belousov.\" under sponsorship from the FreeBSD Foundation.
721642577SAlfred Perlstein.\"
821642577SAlfred Perlstein.\" Redistribution and use in source and binary forms, with or without
921642577SAlfred Perlstein.\" modification, are permitted provided that the following conditions
1021642577SAlfred Perlstein.\" are met:
1121642577SAlfred Perlstein.\" 1. Redistributions of source code must retain the above copyright
1221642577SAlfred Perlstein.\"    notice(s), this list of conditions and the following disclaimer as
1321642577SAlfred Perlstein.\"    the first lines of this file unmodified other than the possible
1421642577SAlfred Perlstein.\"    addition of one or more copyright notices.
1521642577SAlfred Perlstein.\" 2. Redistributions in binary form must reproduce the above copyright
1621642577SAlfred Perlstein.\"    notice(s), this list of conditions and the following disclaimer in the
1721642577SAlfred Perlstein.\"    documentation and/or other materials provided with the distribution.
1821642577SAlfred Perlstein.\"
1921642577SAlfred Perlstein.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) ``AS IS'' AND ANY
2021642577SAlfred Perlstein.\" EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
2121642577SAlfred Perlstein.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
2221642577SAlfred Perlstein.\" DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY
2321642577SAlfred Perlstein.\" DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
2421642577SAlfred Perlstein.\" (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
2521642577SAlfred Perlstein.\" SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
2621642577SAlfred Perlstein.\" CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2721642577SAlfred Perlstein.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2821642577SAlfred Perlstein.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
2921642577SAlfred Perlstein.\" DAMAGE.
3021642577SAlfred Perlstein.\"
3121642577SAlfred Perlstein.\" $FreeBSD$
3221642577SAlfred Perlstein.\"
33*00cf6892SKonstantin Belousov.Dd August 23, 2013
3421642577SAlfred Perlstein.Dt VM_PAGE_GRAB 9
3521642577SAlfred Perlstein.Os
3621642577SAlfred Perlstein.Sh NAME
3721642577SAlfred Perlstein.Nm vm_page_grab
3821642577SAlfred Perlstein.Nd "returns a page from an object"
3921642577SAlfred Perlstein.Sh SYNOPSIS
4021642577SAlfred Perlstein.In sys/param.h
4121642577SAlfred Perlstein.In vm/vm.h
4221642577SAlfred Perlstein.In vm/vm_page.h
4321642577SAlfred Perlstein.Ft vm_page_t
4421642577SAlfred Perlstein.Fn vm_page_grab "vm_object_t object" "vm_pindex_t pindex" "int allocflags"
4521642577SAlfred Perlstein.Sh DESCRIPTION
4621642577SAlfred PerlsteinThe
4721642577SAlfred Perlstein.Fn vm_page_grab
4821642577SAlfred Perlsteinfunction returns the page at
4921642577SAlfred Perlstein.Fa pindex
5021642577SAlfred Perlsteinfrom the given object.
511f620c2eSRuslan ErmilovIf the page exists and is busy,
5221642577SAlfred Perlstein.Fn vm_page_grab
5321642577SAlfred Perlsteinwill sleep while waiting for it.
541f620c2eSRuslan ErmilovIf the page does not exist, it is allocated.
55*00cf6892SKonstantin BelousovThe function sleeps until the allocation request can be satisfied.
5621642577SAlfred Perlstein.Pp
57*00cf6892SKonstantin BelousovThe function requires the
58*00cf6892SKonstantin Belousov.Fa object
59*00cf6892SKonstantin Belousovto be locked on entry, and returns with the object locked.
60*00cf6892SKonstantin BelousovIf the
6121642577SAlfred Perlstein.Fn vm_page_grab
62*00cf6892SKonstantin Belousovfunction sleeps for any reason, the object lock is temporary dropped.
63*00cf6892SKonstantin Belousov.Pp
64*00cf6892SKonstantin BelousovThe
65*00cf6892SKonstantin Belousov.Fn vm_page_grab
66*00cf6892SKonstantin Belousovsupports all of the flags supported by
67*00cf6892SKonstantin Belousov.Xr vm_page_alloc .
68*00cf6892SKonstantin BelousovIn addition,
69*00cf6892SKonstantin Belousov.Fn vm_page_grab
70*00cf6892SKonstantin Belousovsupports the following flags:
71*00cf6892SKonstantin Belousov.Bl -tag -width ".Dv VM_ALLOC_IGN_SBUSY"
72*00cf6892SKonstantin Belousov.It Dv VM_ALLOC_IGN_SBUSY
73*00cf6892SKonstantin BelousovWhen waiting for the busy state of the existing page to drain,
74*00cf6892SKonstantin Belousovonly test for exclusive busy; ignore the shared busy counter.
75*00cf6892SKonstantin Belousov.El
76*00cf6892SKonstantin Belousov.Sh RETURN VALUES
77*00cf6892SKonstantin BelousovThe
78*00cf6892SKonstantin Belousov.Fn vm_page_grab
79*00cf6892SKonstantin Belousovalways returns the page.
8021642577SAlfred Perlstein.Sh SEE ALSO
8121642577SAlfred Perlstein.Xr vm_page_alloc 9
8221642577SAlfred Perlstein.Sh AUTHORS
83571dba6eSHiten PandyaThis manual page was written by
8421642577SAlfred Perlstein.An Chad David Aq davidc@acns.ab.ca .
85