pgtable
pgtable_t *pgtable;
pgtable = xlate->xlt_pgtable;
shwp = (hw_pdte_t *)(pgtable->hwpg_vaddr) + idx;
pgtable_t *pgtable;
pgtable = xlate->xlt_pgtable;
rw_enter(&(pgtable->swpg_rwlock), RW_READER);
next = *(pgtable->swpg_next_array + idx);
rw_exit(&(pgtable->swpg_rwlock));
pgtable_t *pgtable;
pgtable = xlate->xlt_pgtable;
shwp = (hw_pdte_t *)(pgtable->hwpg_vaddr) + idx;
pgtable_t *pgtable;
pgtable = xlate->xlt_pgtable;
rw_enter(&(pgtable->swpg_rwlock), RW_READER);
hwp = (hw_pdte_t *)(pgtable->hwpg_vaddr) + idx;
next = (pgtable->swpg_next_array)[idx];
rw_tryupgrade(&(pgtable->swpg_rwlock)) == 0) {
rw_exit(&(pgtable->swpg_rwlock));
rw_enter(&(pgtable->swpg_rwlock), RW_WRITER);
(pgtable->swpg_next_array)[idx] = next;
rw_downgrade(&(pgtable->swpg_rwlock));
rw_exit(&(pgtable->swpg_rwlock));
pgtable_t *pgtable;
pgtable = (pgtable_t *)buf;
dmafp, NULL, &pgtable->hwpg_dmahdl) != DDI_SUCCESS) {
if (ddi_dma_mem_alloc(pgtable->hwpg_dmahdl, IMMU_PAGESIZE,
&pgtable->hwpg_memhdl) != DDI_SUCCESS) {
ddi_dma_free_handle(&pgtable->hwpg_dmahdl);
ddi_dma_mem_free(&pgtable->hwpg_memhdl);
ddi_dma_free_handle(&pgtable->hwpg_dmahdl);
pgtable->hwpg_paddr = pfn_to_pa(hat_getpfnum(kas.a_hat, vaddr));
pgtable->hwpg_vaddr = vaddr;
pgtable->swpg_next_array = next;
rw_init(&(pgtable->swpg_rwlock), NULL, RW_DEFAULT, NULL);
pgtable_t *pgtable;
pgtable = (pgtable_t *)buf;
rw_destroy(&(pgtable->swpg_rwlock));
ddi_dma_mem_free(&pgtable->hwpg_memhdl);
ddi_dma_free_handle(&pgtable->hwpg_dmahdl);
kmem_free(pgtable->swpg_next_array, IMMU_PAGESIZE);
pgtable_t *pgtable;
pgtable = kmem_cache_alloc(immu->immu_pgtable_cache, kmflags);
if (pgtable == NULL) {
return (pgtable);
pgtable_zero(pgtable_t *pgtable)
bzero(pgtable->hwpg_vaddr, IMMU_PAGESIZE);
bzero(pgtable->swpg_next_array, IMMU_PAGESIZE);
pgtable_free(immu_t *immu, pgtable_t *pgtable)
kmem_cache_free(immu->immu_pgtable_cache, pgtable);
struct pgtable **swpg_next_array;