diff options
author | alc <alc@FreeBSD.org> | 2004-07-05 16:59:56 +0000 |
---|---|---|
committer | alc <alc@FreeBSD.org> | 2004-07-05 16:59:56 +0000 |
commit | 53aa64d4e62d2d6746d63cd9bbfa414ebdca0f5b (patch) | |
tree | 633719e7f64b41d73d4494c44e81ae7b04ba7bc4 /sys/alpha/include | |
parent | f03dd6e62be000d179ff8cc247e95bbc3e3c8e17 (diff) | |
download | FreeBSD-src-53aa64d4e62d2d6746d63cd9bbfa414ebdca0f5b.zip FreeBSD-src-53aa64d4e62d2d6746d63cd9bbfa414ebdca0f5b.tar.gz |
MFamd64/i386
Add partial pmap locking.
Tested by: kensmith@
Diffstat (limited to 'sys/alpha/include')
-rw-r--r-- | sys/alpha/include/pmap.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/sys/alpha/include/pmap.h b/sys/alpha/include/pmap.h index aeeafc2..8c18912 100644 --- a/sys/alpha/include/pmap.h +++ b/sys/alpha/include/pmap.h @@ -95,6 +95,8 @@ #ifndef LOCORE #include <sys/queue.h> +#include <sys/_lock.h> +#include <sys/_mutex.h> typedef alpha_pt_entry_t pt_entry_t; @@ -165,6 +167,7 @@ struct md_page { #define ASNGEN_MASK ((1 << ASNGEN_BITS) - 1) struct pmap { + struct mtx pm_mtx; pt_entry_t *pm_lev1; /* KVA of lev0map */ vm_object_t pm_pteobj; /* Container for pte's */ TAILQ_HEAD(,pv_entry) pm_pvlist; /* list of mappings in pmap */ @@ -183,6 +186,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 /* |