Module Name: src
Committed By: rmind
Date: Sat Jan 28 14:37:35 UTC 2012
Modified Files:
src/sys/uvm: uvm_object.h
Log Message:
Describe UVM object and explain lock sharing a little.
To generate a diff of this commit:
cvs rdiff -u -r1.31 -r1.32 src/sys/uvm/uvm_object.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/uvm/uvm_object.h
diff -u src/sys/uvm/uvm_object.h:1.31 src/sys/uvm/uvm_object.h:1.32
--- src/sys/uvm/uvm_object.h:1.31 Sun Jun 12 03:36:03 2011
+++ src/sys/uvm/uvm_object.h Sat Jan 28 14:37:35 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: uvm_object.h,v 1.31 2011/06/12 03:36:03 rmind Exp $ */
+/* $NetBSD: uvm_object.h,v 1.32 2012/01/28 14:37:35 rmind Exp $ */
/*
* Copyright (c) 1997 Charles D. Cranor and Washington University.
@@ -30,16 +30,24 @@
#ifndef _UVM_UVM_OBJECT_H_
#define _UVM_UVM_OBJECT_H_
-/*
- * uvm_object.h
- */
-
#include <sys/queue.h>
#include <sys/rbtree.h>
#include <uvm/uvm_pglist.h>
/*
- * uvm_object: all that is left of mach objects.
+ * The UVM memory object interface. Notes:
+ *
+ * A UVM memory object represents a list of pages, which are managed by
+ * the object's pager operations (uvm_object::pgops). All pages belonging
+ * to an object are owned by it and thus protected by the object lock.
+ *
+ * The lock (uvm_object::vmobjlock) may be shared amongst the UVM objects.
+ * By default, the lock is allocated dynamically using mutex_obj(9) cache.
+ * Lock sharing is normally used when there is an underlying object. For
+ * example, vnode representing a file may have an underlying node, which
+ * is the case for tmpfs and layered file systems. In such case, vnode's
+ * UVM object and the underlying UVM object shares the lock (note that the
+ * vnode_t::v_interlock points to uvm_object::vmobjlock).
*/
struct uvm_object {