summaryrefslogtreecommitdiffstats
path: root/sys/ia64/include/pmap.h
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2004-07-19 05:39:49 +0000
committeralc <alc@FreeBSD.org>2004-07-19 05:39:49 +0000
commit15d7825a5f77eea2647e578771fa0533edc0863d (patch)
tree40d950a1231402b832f21f630288f0db08b4086f /sys/ia64/include/pmap.h
parentf05f0023939de87de66a4906915cbab31d5f9dbe (diff)
downloadFreeBSD-src-15d7825a5f77eea2647e578771fa0533edc0863d.zip
FreeBSD-src-15d7825a5f77eea2647e578771fa0533edc0863d.tar.gz
Add partial pmap locking.
Tested by: marcel@
Diffstat (limited to 'sys/ia64/include/pmap.h')
-rw-r--r--sys/ia64/include/pmap.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/sys/ia64/include/pmap.h b/sys/ia64/include/pmap.h
index af2610e..dbb0b2c 100644
--- a/sys/ia64/include/pmap.h
+++ b/sys/ia64/include/pmap.h
@@ -46,6 +46,8 @@
#define _MACHINE_PMAP_H_
#include <sys/queue.h>
+#include <sys/_lock.h>
+#include <sys/_mutex.h>
#include <machine/pte.h>
#ifdef _KERNEL
@@ -70,6 +72,7 @@ struct md_page {
};
struct pmap {
+ struct mtx pm_mtx;
TAILQ_HEAD(,pv_entry) pm_pvlist; /* list of mappings in pmap */
u_int32_t pm_rid[5]; /* base RID for pmap */
int pm_active; /* active flag */
@@ -81,6 +84,17 @@ typedef struct pmap *pmap_t;
#ifdef _KERNEL
extern struct pmap kernel_pmap_store;
#define kernel_pmap (&kernel_pmap_store)
+
+#define PMAP_LOCK(pmap) mtx_lock(&(pmap)->pm_mtx)
+#define PMAP_LOCK_ASSERT(pmap, type) \
+ mtx_assert(&(pmap)->pm_mtx, (type))
+#define PMAP_LOCK_DESTROY(pmap) mtx_destroy(&(pmap)->pm_mtx)
+#define PMAP_LOCK_INIT(pmap) mtx_init(&(pmap)->pm_mtx, "pmap", \
+ NULL, MTX_DEF)
+#define PMAP_LOCKED(pmap) mtx_owned(&(pmap)->pm_mtx)
+#define PMAP_MTX(pmap) (&(pmap)->pm_mtx)
+#define PMAP_TRYLOCK(pmap) mtx_trylock(&(pmap)->pm_mtx)
+#define PMAP_UNLOCK(pmap) mtx_unlock(&(pmap)->pm_mtx)
#endif
/*
OpenPOWER on IntegriCloud