Print this page
patch as-lock-macro-simplification
*** 188,198 ****
}
} else {
/* get the corresponding memory info for each virtual address */
as = curproc->p_as;
! AS_LOCK_ENTER(as, &as->a_lock, RW_READER);
hat = as->a_hat;
for (i = out_idx = 0; i < addr_count; i++, out_idx +=
info_count) {
addr = in_array[i];
vaddr = (uintptr_t)(addr & ~PAGEOFFSET);
--- 188,198 ----
}
} else {
/* get the corresponding memory info for each virtual address */
as = curproc->p_as;
! AS_LOCK_ENTER(as, RW_READER);
hat = as->a_hat;
for (i = out_idx = 0; i < addr_count; i++, out_idx +=
info_count) {
addr = in_array[i];
vaddr = (uintptr_t)(addr & ~PAGEOFFSET);
*** 284,294 ****
break;
}
}
}
}
! AS_LOCK_EXIT(as, &as->a_lock);
}
/* copy out the results and validity bits and free the buffers */
if ((copyout(out_array, minfo.mi_outdata, out_size) != 0) ||
(copyout(val_array, minfo.mi_validity, val_size) != 0))
--- 284,294 ----
break;
}
}
}
}
! AS_LOCK_EXIT(as);
}
/* copy out the results and validity bits and free the buffers */
if ((copyout(out_array, minfo.mi_outdata, out_size) != 0) ||
(copyout(val_array, minfo.mi_validity, val_size) != 0))