Print this page
patch as-lock-macro-simplification

*** 186,196 **** struct seg *s1; struct seg *s2; size_t size; struct as *as = seg->s_as; ! ASSERT(as && AS_WRITE_HELD(as, &as->a_lock)); /* * Need a page per virtual color or just 1 if no vac. */ mutex_enter(&segnf_lock); --- 186,196 ---- struct seg *s1; struct seg *s2; size_t size; struct as *as = seg->s_as; ! ASSERT(as && AS_WRITE_HELD(as)); /* * Need a page per virtual color or just 1 if no vac. */ mutex_enter(&segnf_lock);
*** 304,314 **** * Split a segment at addr for length len. */ static int segnf_unmap(struct seg *seg, caddr_t addr, size_t len) { ! ASSERT(seg->s_as && AS_WRITE_HELD(seg->s_as, &seg->s_as->a_lock)); /* * Check for bad sizes. */ if (addr < seg->s_base || addr + len > seg->s_base + seg->s_size || --- 304,314 ---- * Split a segment at addr for length len. */ static int segnf_unmap(struct seg *seg, caddr_t addr, size_t len) { ! ASSERT(seg->s_as && AS_WRITE_HELD(seg->s_as)); /* * Check for bad sizes. */ if (addr < seg->s_base || addr + len > seg->s_base + seg->s_size ||
*** 373,383 **** * Free a segment. */ static void segnf_free(struct seg *seg) { ! ASSERT(seg->s_as && AS_WRITE_HELD(seg->s_as, &seg->s_as->a_lock)); } /* * No faults allowed on segnf. */ --- 373,383 ---- * Free a segment. */ static void segnf_free(struct seg *seg) { ! ASSERT(seg->s_as && AS_WRITE_HELD(seg->s_as)); } /* * No faults allowed on segnf. */
*** 389,408 **** /* ARGSUSED */ static int segnf_setprot(struct seg *seg, caddr_t addr, size_t len, uint_t prot) { ! ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as, &seg->s_as->a_lock)); return (EACCES); } /* ARGSUSED */ static int segnf_checkprot(struct seg *seg, caddr_t addr, size_t len, uint_t prot) { uint_t sprot; ! ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as, &seg->s_as->a_lock)); sprot = seg->s_as == &kas ? PROT_READ : PROT_READ|PROT_USER; return ((prot & sprot) == prot ? 0 : EACCES); } --- 389,408 ---- /* ARGSUSED */ static int segnf_setprot(struct seg *seg, caddr_t addr, size_t len, uint_t prot) { ! ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as)); return (EACCES); } /* ARGSUSED */ static int segnf_checkprot(struct seg *seg, caddr_t addr, size_t len, uint_t prot) { uint_t sprot; ! ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as)); sprot = seg->s_as == &kas ? PROT_READ : PROT_READ|PROT_USER; return ((prot & sprot) == prot ? 0 : EACCES); }
*** 422,461 **** static int segnf_getprot(struct seg *seg, caddr_t addr, size_t len, uint_t *protv) { size_t pgno = seg_page(seg, addr + len) - seg_page(seg, addr) + 1; size_t p; ! ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as, &seg->s_as->a_lock)); for (p = 0; p < pgno; ++p) protv[p] = PROT_READ; return (0); } /* ARGSUSED */ static u_offset_t segnf_getoffset(struct seg *seg, caddr_t addr) { ! ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as, &seg->s_as->a_lock)); return ((u_offset_t)0); } /* ARGSUSED */ static int segnf_gettype(struct seg *seg, caddr_t addr) { ! ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as, &seg->s_as->a_lock)); return (MAP_SHARED); } /* ARGSUSED */ static int segnf_getvp(struct seg *seg, caddr_t addr, struct vnode **vpp) { ! ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as, &seg->s_as->a_lock)); *vpp = &nfvp; return (0); } --- 422,461 ---- static int segnf_getprot(struct seg *seg, caddr_t addr, size_t len, uint_t *protv) { size_t pgno = seg_page(seg, addr + len) - seg_page(seg, addr) + 1; size_t p; ! ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as)); for (p = 0; p < pgno; ++p) protv[p] = PROT_READ; return (0); } /* ARGSUSED */ static u_offset_t segnf_getoffset(struct seg *seg, caddr_t addr) { ! ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as)); return ((u_offset_t)0); } /* ARGSUSED */ static int segnf_gettype(struct seg *seg, caddr_t addr) { ! ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as)); return (MAP_SHARED); } /* ARGSUSED */ static int segnf_getvp(struct seg *seg, caddr_t addr, struct vnode **vpp) { ! ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as)); *vpp = &nfvp; return (0); }