svn commit: r215653 - in stable/8: share/man/man9 sys/vm

Alan Cox alc at FreeBSD.org
Mon Nov 22 06:25:56 UTC 2010


Author: alc
Date: Mon Nov 22 06:25:56 2010
New Revision: 215653
URL: http://svn.freebsd.org/changeset/base/215653

Log:
  MFC r209669
    Improve the comment and man page for vm_page_alloc().

Modified:
  stable/8/share/man/man9/vm_page_alloc.9
  stable/8/sys/vm/vm_page.c
Directory Properties:
  stable/8/share/man/man9/   (props changed)
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)
  stable/8/sys/dev/xen/xenpci/   (props changed)

Modified: stable/8/share/man/man9/vm_page_alloc.9
==============================================================================
--- stable/8/share/man/man9/vm_page_alloc.9	Mon Nov 22 02:42:02 2010	(r215652)
+++ stable/8/share/man/man9/vm_page_alloc.9	Mon Nov 22 06:25:56 2010	(r215653)
@@ -26,7 +26,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd February 27, 2010
+.Dd July 3, 2010
 .Dt VM_PAGE_ALLOC 9
 .Os
 .Sh NAME
@@ -38,7 +38,7 @@
 .In vm/vm.h
 .In vm/vm_page.h
 .Ft vm_page_t
-.Fn vm_page_alloc "vm_object_t object" "vm_pindex_t pindex" "int page_req"
+.Fn vm_page_alloc "vm_object_t object" "vm_pindex_t pindex" "int req"
 .Sh DESCRIPTION
 The
 .Fn vm_page_alloc
@@ -51,16 +51,15 @@ It is assumed that a page has not alread
 The page returned is inserted into the object, unless
 .Dv VM_ALLOC_NOOBJ
 is specified in the
-.Fa page_req ,
-but is not inserted into a pmap.
-The page may exists in the vm object cache, in which case it will
+.Fa req .
+The page may exist in the vm object cache, in which case it will
 be reactivated instead, moving from the cache into the object page list.
 .Pp
 .Fn vm_page_alloc
 will not sleep.
 .Pp
 Its arguments are:
-.Bl -tag -width ".Fa page_req"
+.Bl -tag -width ".Fa object"
 .It Fa object
 The VM object to allocate the page for.
 The
@@ -70,40 +69,48 @@ must be locked if
 is not specified.
 .It Fa pindex
 The index into the object at which the page should be inserted.
-.It Fa page_req
-A flag indicating how the page should be allocated.
+.It Fa req
+The bitwise-inclusive OR of a class and any optional flags indicating
+how the page should be allocated.
+.Pp
+Exactly one of the following classes must be specified:
 .Bl -tag -width ".Dv VM_ALLOC_INTERRUPT"
 .It Dv VM_ALLOC_NORMAL
 The page should be allocated with no special treatment.
 .It Dv VM_ALLOC_SYSTEM
-The page can be allocated if the cache queue is empty and the free
+The page can be allocated if the cache is empty and the free
 page count is above the interrupt reserved water mark.
-If
-.Dv VM_ALLOC_INTERRUPT
-is set, the page can be allocated as long as the free page count is
-greater than zero.
 This flag should be used only when the system really needs the page.
 .It Dv VM_ALLOC_INTERRUPT
 .Fn vm_page_alloc
-is being called during an interrupt and therefore the cache cannot
-be accessed.
-The page will only be returned successfully if the free count is greater
+is being called during an interrupt.
+A page will be returned successfully if the free page count is greater
 than zero.
+.El
+.Pp
+The optional flags are:
+.Bl -tag -width ".Dv VM_ALLOC_IFNOTCACHED"
 .It Dv VM_ALLOC_ZERO
 Indicate a preference for a pre-zeroed page.
-There is no guarantee that the page thus returned will be zeroed, but
-it will be marked by
+There is no guarantee that the returned page will be zeroed, but it
+will have the
 .Dv PG_ZERO
-flag if it is zeroed.
+flag set if it is zeroed.
 .It Dv VM_ALLOC_NOOBJ
 Do not associate the allocated page with a vm object.
 The
 .Fa object
 argument is ignored.
 .It Dv VM_ALLOC_NOBUSY
-The page returned will not be busied.
+The returned page will not have the
+.Dv VPO_BUSY
+flag set.
 .It Dv VM_ALLOC_WIRED
-The returned page is wired.
+The returned page will be wired.
+.It Dv VM_ALLOC_IFCACHED
+Allocate the page only if it is cached.
+Otherwise, return
+.Dv NULL .
 .It Dv VM_ALLOC_IFNOTCACHED
 Only allocate the page if it is not cached in the
 .Fa object .

Modified: stable/8/sys/vm/vm_page.c
==============================================================================
--- stable/8/sys/vm/vm_page.c	Mon Nov 22 02:42:02 2010	(r215652)
+++ stable/8/sys/vm/vm_page.c	Mon Nov 22 06:25:56 2010	(r215653)
@@ -1076,14 +1076,19 @@ vm_page_cache_transfer(vm_object_t orig_
  *	Allocate and return a memory cell associated
  *	with this VM object/offset pair.
  *
- *	page_req classes:
+ *	The caller must always specify an allocation class.
+ *
+ *	allocation classes:
  *	VM_ALLOC_NORMAL		normal process request
  *	VM_ALLOC_SYSTEM		system *really* needs a page
  *	VM_ALLOC_INTERRUPT	interrupt time request
- *	VM_ALLOC_ZERO		zero page
+ *
+ *	optional allocation flags:
+ *	VM_ALLOC_ZERO		prefer a zeroed page
  *	VM_ALLOC_WIRED		wire the allocated page
  *	VM_ALLOC_NOOBJ		page is not associated with a vm object
  *	VM_ALLOC_NOBUSY		do not set the page busy
+ *	VM_ALLOC_IFCACHED	return page only if it is cached
  *	VM_ALLOC_IFNOTCACHED	return NULL, do not reactivate if the page
  *				is cached
  *


More information about the svn-src-stable-8 mailing list