Print this page
patch as-lock-macro-simplification

*** 167,184 **** /* * Find the segment we want to mess with, then add * the mfn range to the segment. */ ! AS_LOCK_ENTER(as, &as->a_lock, RW_READER); if ((seg = as_findseg(as, addr, 0)) == NULL || addr + mmu_ptob(mme->npages) > seg->s_base + seg->s_size) error = EINVAL; else error = segmf_add_mfns(seg, addr, mme->mfn, mme->npages, mmc->dom); ! AS_LOCK_EXIT(as, &as->a_lock); if (error != 0) break; } --- 167,184 ---- /* * Find the segment we want to mess with, then add * the mfn range to the segment. */ ! AS_LOCK_ENTER(as, RW_READER); if ((seg = as_findseg(as, addr, 0)) == NULL || addr + mmu_ptob(mme->npages) > seg->s_base + seg->s_size) error = EINVAL; else error = segmf_add_mfns(seg, addr, mme->mfn, mme->npages, mmc->dom); ! AS_LOCK_EXIT(as); if (error != 0) break; }
*** 217,227 **** DTRACE_XPV3(mmapbatch__start, domid_t, mmb->dom, int, mmb->num, caddr_t, mmb->addr); addr = (caddr_t)mmb->addr; ! AS_LOCK_ENTER(as, &as->a_lock, RW_READER); if ((seg = as_findseg(as, addr, 0)) == NULL || addr + ptob(mmb->num) > seg->s_base + seg->s_size) { error = EINVAL; goto done; } --- 217,227 ---- DTRACE_XPV3(mmapbatch__start, domid_t, mmb->dom, int, mmb->num, caddr_t, mmb->addr); addr = (caddr_t)mmb->addr; ! AS_LOCK_ENTER(as, RW_READER); if ((seg = as_findseg(as, addr, 0)) == NULL || addr + ptob(mmb->num) > seg->s_base + seg->s_size) { error = EINVAL; goto done; }
*** 258,268 **** break; } } done: ! AS_LOCK_EXIT(as, &as->a_lock); DTRACE_XPV3(mmapbatch__end, int, error, struct seg *, seg, caddr_t, mmb->addr); return (error); --- 258,268 ---- break; } } done: ! AS_LOCK_EXIT(as); DTRACE_XPV3(mmapbatch__end, int, error, struct seg *, seg, caddr_t, mmb->addr); return (error);