diff options
author | alc <alc@FreeBSD.org> | 2004-06-16 07:03:15 +0000 |
---|---|---|
committer | alc <alc@FreeBSD.org> | 2004-06-16 07:03:15 +0000 |
commit | 16451deefec74b4c4a7a25d0a72239740a03b735 (patch) | |
tree | 587b91d6b280d0538006314de3eedec7b3b5db5a /sys/i386/include/pmap.h | |
parent | 6f2c3ad82da733bf2135cc2a015f095309337c84 (diff) | |
download | FreeBSD-src-16451deefec74b4c4a7a25d0a72239740a03b735.zip FreeBSD-src-16451deefec74b4c4a7a25d0a72239740a03b735.tar.gz |
MFamd64
Introduce pmap locking to many of the pmap functions.
Diffstat (limited to 'sys/i386/include/pmap.h')
-rw-r--r-- | sys/i386/include/pmap.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/sys/i386/include/pmap.h b/sys/i386/include/pmap.h index d1e3e49..7c6d759 100644 --- a/sys/i386/include/pmap.h +++ b/sys/i386/include/pmap.h @@ -135,6 +135,8 @@ #ifndef LOCORE +#include <sys/_lock.h> +#include <sys/_mutex.h> #include <sys/queue.h> #ifdef PAE @@ -276,6 +278,7 @@ struct md_page { }; struct pmap { + struct mtx pm_mtx; pd_entry_t *pm_pdir; /* KVA of page directory */ TAILQ_HEAD(,pv_entry) pm_pvlist; /* list of mappings in pmap */ u_int pm_active; /* active on cpus */ @@ -292,6 +295,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 /* |