From owner-svn-src-all@FreeBSD.ORG Tue Sep 6 10:40:22 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 081C01065689; Tue, 6 Sep 2011 10:40:22 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E16D98FC20; Tue, 6 Sep 2011 10:40:21 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p86AeLJR079433; Tue, 6 Sep 2011 10:40:21 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p86AeLCq079429; Tue, 6 Sep 2011 10:40:21 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201109061040.p86AeLCq079429@svn.freebsd.org> From: Konstantin Belousov Date: Tue, 6 Sep 2011 10:40:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r225419 - in head: . share/man/man9 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 06 Sep 2011 10:40:22 -0000 Author: kib Date: Tue Sep 6 10:40:21 2011 New Revision: 225419 URL: http://svn.freebsd.org/changeset/base/225419 Log: Document vm_page_aflag_set(9), vm_page_aflag_clear(9) and vm_page_reference(9). Retire vm_page_flag_set() and vm_page_flag_clear() functions. Reviewed by: alc Approved by: re (bz) Added: head/share/man/man9/vm_page_aflag.9 - copied, changed from r225418, head/share/man/man9/vm_page_flag.9 Deleted: head/share/man/man9/vm_page_flag.9 Modified: head/ObsoleteFiles.inc head/share/man/man9/Makefile Modified: head/ObsoleteFiles.inc ============================================================================== --- head/ObsoleteFiles.inc Tue Sep 6 10:30:11 2011 (r225418) +++ head/ObsoleteFiles.inc Tue Sep 6 10:40:21 2011 (r225419) @@ -38,6 +38,10 @@ # xargs -n1 | sort | uniq -d; # done +# 20110831: atomic page flags operations +OLD_FILES+=usr/share/man/man9/vm_page_flag.9.gz +OLD_FILES+=usr/share/man/man9/vm_page_flag_clear.9.gz +OLD_FILES+=usr/share/man/man9/vm_page_flag_set.9.gz # 20110828: library version bump for 9.0 OLD_LIBS+=lib/libcam.so.5 OLD_LIBS+=lib/libpcap.so.7 Modified: head/share/man/man9/Makefile ============================================================================== --- head/share/man/man9/Makefile Tue Sep 6 10:30:11 2011 (r225418) +++ head/share/man/man9/Makefile Tue Sep 6 10:40:21 2011 (r225419) @@ -320,7 +320,7 @@ MAN= accept_filter.9 \ vm_page_cache.9 \ vm_page_deactivate.9 \ vm_page_dontneed.9 \ - vm_page_flag.9 \ + vm_page_aflag.9 \ vm_page_free.9 \ vm_page_grab.9 \ vm_page_hold.9 \ @@ -1372,8 +1372,9 @@ MLINKS+=vm_page_bits.9 vm_page_clear_dir vm_page_bits.9 vm_page_test_dirty.9 \ vm_page_bits.9 vm_page_undirty.9 \ vm_page_bits.9 vm_page_zero_invalid.9 -MLINKS+=vm_page_flag.9 vm_page_flag_clear.9 \ - vm_page_flag.9 vm_page_flag_set.9 +MLINKS+=vm_page_aflag.9 vm_page_aflag_clear.9 \ + vm_page_aflag.9 vm_page_aflag_set.9 \ + vm_page_aflag.9 vm_page_reference.9 MLINKS+=vm_page_free.9 vm_page_free_toq.9 \ vm_page_free.9 vm_page_free_zero.9 \ vm_page_free.9 vm_page_try_to_free.9 Copied and modified: head/share/man/man9/vm_page_aflag.9 (from r225418, head/share/man/man9/vm_page_flag.9) ============================================================================== --- head/share/man/man9/vm_page_flag.9 Tue Sep 6 10:30:11 2011 (r225418, copy source) +++ head/share/man/man9/vm_page_aflag.9 Tue Sep 6 10:40:21 2011 (r225419) @@ -26,36 +26,75 @@ .\" .\" $FreeBSD$ .\" -.Dd July 14, 2001 +.Dd August 31, 2011 .Dt VM_PAGE_FLAG 9 .Os .Sh NAME -.Nm vm_page_flag_clear , vm_page_flag_set -.Nd "change page flags" +.Nm vm_page_aflag_clear , vm_page_aflag_set , vm_page_reference +.Nd "change page atomic flags" .Sh SYNOPSIS .In sys/param.h .In vm/vm.h .In vm/vm_page.h .Ft void -.Fn vm_page_flag_clear "vm_page_t m" "unsigned short bits" +.Fn vm_page_aflag_clear "vm_page_t m" "uint8_t bits" .Ft void -.Fn vm_page_flag_set "vm_page_t m" "unsigned short bits" +.Fn vm_page_aflag_set "vm_page_t m" "uint8_t bits" +.Ft void +.Fn vm_page_reference "vm_page_t m" .Sh DESCRIPTION The -.Fn vm_page_flag_clear -atomically clears the specified bits on the page's flags. +.Fn vm_page_aflag_clear +atomically clears the specified bits on the page's +.Va aflags . +.Pp +The +.Fn vm_page_aflag_set +atomically sets the specified bits on the page's +.Va aflags . .Pp The -.Fn vm_page_flag_set -atomically sets the specified bits on the page's flags. +.Fn vm_page_reference m +call is the same as +.Bd -literal -offset indent +vm_page_aflag_set(m, PGA_REFERENCED); +.Ed +.Lp +and is the recommended way to mark the page as referenced from +third-party kernel modules. +.Pp +These functions neither block nor require any locks to be held +around the calls for correctness. .Pp The functions arguments are: .Bl -tag -width ".Fa bits" .It Fa m -The page whose flags are updated. +The page whose +.Va aflags +are updated. .It Fa bits The bits that are set or cleared on the page's flags. .El +.Pp +The following +.Va aflags +can be set or cleared: +.Bl -tag -width ".Fa PGA_REFERENCED" +.It Fa PGA_REFERENCED +The bit may be set to indicate that the page has been recently accessed. +For instance, +.Xr pmap 9 +sets this bit to reflect the accessed attribute of the page mapping +typically updated by processor's memory management unit on the page access. +.It Fa PGA_WRITEABLE +A writeable mapping for the page may exist. +.El +.Pp +Both +.Dv PGA_REFERENCED +and +.Dv PGA_WRITEABLE +bits are only valid for the managed pages. .Sh AUTHORS This manual page was written by .An Chad David Aq davidc@acns.ab.ca .