svn commit: r206947 - user/kmacy/head_page_lock_2/sys/amd64/include

Kip Macy kmacy at FreeBSD.org
Tue Apr 20 22:46:23 UTC 2010


Author: kmacy
Date: Tue Apr 20 22:46:23 2010
New Revision: 206947
URL: http://svn.freebsd.org/changeset/base/206947

Log:
  add generation macros and flag changes

Modified:
  user/kmacy/head_page_lock_2/sys/amd64/include/pmap.h

Modified: user/kmacy/head_page_lock_2/sys/amd64/include/pmap.h
==============================================================================
--- user/kmacy/head_page_lock_2/sys/amd64/include/pmap.h	Tue Apr 20 22:45:12 2010	(r206946)
+++ user/kmacy/head_page_lock_2/sys/amd64/include/pmap.h	Tue Apr 20 22:46:23 2010	(r206947)
@@ -237,6 +237,8 @@ struct md_page {
 	int			pat_mode;
 };
 
+#define PMAP_IN_RETRY		0x1
+
 /*
  * The kernel virtual address (KVA) of the level 4 page table page is always
  * within the direct map (DMAP) region.
@@ -246,8 +248,8 @@ struct pmap {
 	pml4_entry_t		*pm_pml4;	/* KVA of level 4 page table */
 	TAILQ_HEAD(,pv_chunk)	pm_pvchunk;	/* list of mappings in pmap */
 	u_int			pm_active;	/* active on cpus */
-	u_int			pm_gen_count;	/* generation count (pmap lock dropped) */
-	/* spare u_int here due to padding */
+	uint16_t		pm_gen_count;	/* generation count (pmap lock dropped) */
+	uint16_t		pm_flags;
 	struct pmap_statistics	pm_stats;	/* pmap statistics */
 	vm_page_t		pm_root;	/* spare page table pages */
 	vm_page_t		pm_free;	/* Temporary free pages. */
@@ -259,7 +261,18 @@ typedef struct pmap	*pmap_t;
 extern struct pmap	kernel_pmap_store;
 #define kernel_pmap	(&kernel_pmap_store)
 
-#define	PMAP_LOCK(pmap)		mtx_lock(&(pmap)->pm_mtx)
+#define PMAP_UPDATE_GEN_COUNT(pmap)				\
+	do {							\
+		if (pmap->pm_flags & PMAP_IN_RETRY)		\
+			pmap->pm_gen_count++;			\
+	} while (0)
+
+#define	PMAP_LOCK(pmap)						\
+	do {							\
+		mtx_lock(&(pmap)->pm_mtx);			\
+		PMAP_UPDATE_GEN_COUNT((pmap));			\
+	} while (0)
+
 #define	PMAP_LOCKPTR(pmap)	(&(pmap)->pm_mtx)
 
 #define	PMAP_LOCK_ASSERT(pmap, type)					\


More information about the svn-src-user mailing list