Lines Matching refs:vpm

107 #define	VPMAPMTX(vpm)	(&vpm->vpm_mtx)  argument
108 #define VPMAP2VMF(vpm) (&vpmd_free[(vpm - vpmd_vpmap) & vpmd_freemsk]) argument
109 #define VPMAP2VMF_NDX(vpm) (ushort_t)((vpm - vpmd_vpmap) & vpmd_freemsk) argument
111 #define VPMID(vpm) (uint_t)((vpm - vpmd_vpmap) + 1) argument
169 struct vpmap *vpm; in vpm_init() local
250 for (vpm = &vpmd_vpmap[npages - 1]; vpm >= vpmd_vpmap; vpm--) { in vpm_init()
260 prefetch_smap_w((void *)vpm); in vpm_init()
262 vpm->vpm_vp = NULL; in vpm_init()
263 vpm->vpm_off = 0; in vpm_init()
264 vpm->vpm_pp = NULL; in vpm_init()
265 vpm->vpm_refcnt = 0; in vpm_init()
266 mutex_init(&vpm->vpm_mtx, NULL, MUTEX_DEFAULT, NULL); in vpm_init()
267 vpm->vpm_free_ndx = VPMAP2VMF_NDX(vpm); in vpm_init()
269 vpmflp = VPMAP2VMF(vpm); in vpm_init()
274 releq->vpmq_free = vpm->vpm_next = vpm->vpm_prev = vpm; in vpm_init()
276 vpm->vpm_next = vpmapf; in vpm_init()
277 vpm->vpm_prev = vpmapf->vpm_prev; in vpm_init()
278 vpmapf->vpm_prev = vpm; in vpm_init()
279 vpm->vpm_prev->vpm_next = vpm; in vpm_init()
280 releq->vpmq_free = vpm->vpm_next; in vpm_init()
286 vpm->vpm_ndxflg = VPMRELEQ; in vpm_init()
294 #define VPMAP_RMFREELIST(vpm) \ argument
296 if (vpm->vpm_next != NULL) { \
299 vpmflp = &vpmd_free[vpm->vpm_free_ndx]; \
300 freeq = &vpmflp->vpm_freeq[vpm->vpm_ndxflg]; \
302 if (freeq->vpmq_free != vpm) { \
303 vpm->vpm_prev->vpm_next = vpm->vpm_next; \
304 vpm->vpm_next->vpm_prev = vpm->vpm_prev; \
305 } else if (vpm == vpm->vpm_next) { \
308 freeq->vpmq_free = vpm->vpm_next; \
309 vpm->vpm_prev->vpm_next = vpm->vpm_next; \
310 vpm->vpm_next->vpm_prev = vpm->vpm_prev; \
313 vpm->vpm_next = vpm->vpm_prev = NULL; \
349 struct vpmap *vpm, *first; in get_free_vpmap() local
367 if ((vpm = allocq->vpmq_free) == NULL) { in get_free_vpmap()
448 first = vpm; in get_free_vpmap()
450 vmtx = VPMAPMTX(vpm); in get_free_vpmap()
456 if ((vpm = vpm->vpm_next) == first) { in get_free_vpmap()
475 newpage->p_vpmref = VPMID(vpm); in get_free_vpmap()
490 if (first == vpm) { in get_free_vpmap()
492 allocq->vpmq_free = vpm->vpm_next; in get_free_vpmap()
499 if (allocq->vpmq_free == vpm) in get_free_vpmap()
505 vpm->vpm_prev->vpm_next = vpm->vpm_next; in get_free_vpmap()
506 vpm->vpm_next->vpm_prev = vpm->vpm_prev; in get_free_vpmap()
509 vpm->vpm_prev = vpm->vpm_next = NULL; in get_free_vpmap()
515 if ((pp = vpm->vpm_pp) != NULL && in get_free_vpmap()
516 vpm->vpm_vp == pp->p_vnode && in get_free_vpmap()
517 vpm->vpm_off == pp->p_offset) { in get_free_vpmap()
528 vpm->vpm_vp != pp->p_vnode || in get_free_vpmap()
529 vpm->vpm_off != pp->p_offset || in get_free_vpmap()
530 pp->p_vpmref != VPMID(vpm)) { in get_free_vpmap()
548 if (pp->p_vpmref == VPMID(vpm)) { in get_free_vpmap()
559 vpm->vpm_pp = newpage; in get_free_vpmap()
560 vpm->vpm_vp = newpage->p_vnode; in get_free_vpmap()
561 vpm->vpm_off = newpage->p_offset; in get_free_vpmap()
572 vpm = VPMP(vpmref); in get_free_vpmap()
573 vmtx = VPMAPMTX(vpm); in get_free_vpmap()
575 if ((steal && vpm->vpm_refcnt == 0) || in get_free_vpmap()
576 vpm->vpm_pp != newpage) { in get_free_vpmap()
591 } else if (vpm->vpm_refcnt == 0) { in get_free_vpmap()
596 VPMAP_RMFREELIST(vpm); in get_free_vpmap()
599 return (vpm); in get_free_vpmap()
604 free_vpmap(struct vpmap *vpm) in free_vpmap() argument
610 ASSERT(MUTEX_HELD(VPMAPMTX(vpm))); in free_vpmap()
612 if (vpm->vpm_refcnt != 0) { in free_vpmap()
617 vpmflp = &vpmd_free[vpm->vpm_free_ndx]; in free_vpmap()
627 vpm->vpm_ndxflg = 0; in free_vpmap()
629 vpm->vpm_ndxflg = 1; in free_vpmap()
636 releq->vpmq_free = vpm->vpm_next = vpm->vpm_prev = vpm; in free_vpmap()
657 vpm->vpm_next = vpmfreelist; in free_vpmap()
658 vpm->vpm_prev = vpmfreelist->vpm_prev; in free_vpmap()
659 vpmfreelist->vpm_prev = vpm; in free_vpmap()
660 vpm->vpm_prev->vpm_next = vpm; in free_vpmap()
672 struct vpmap *vpm = NULL; in get_vpmap() local
680 vpm = VPMP(refid); in get_vpmap()
681 vmtx = VPMAPMTX(vpm); in get_vpmap()
687 if (vpm->vpm_pp != pp) { in get_vpmap()
704 vpm = NULL; in get_vpmap()
705 } else if (vpm->vpm_refcnt == 0) { in get_vpmap()
710 VPMAP_RMFREELIST(vpm); in get_vpmap()
713 if (vpm == NULL) { in get_vpmap()
717 vpm = get_free_vpmap(pp); in get_vpmap()
718 vmtx = VPMAPMTX(vpm); in get_vpmap()
724 vpm->vpm_refcnt++; in get_vpmap()
727 return (vpm); in get_vpmap()
757 struct vpmap *vpm; in vpm_pagecreate() local
785 vpm = get_vpmap(pp); in vpm_pagecreate()
786 vml[i].vs_data = (void *)&vpm->vpm_pp; in vpm_pagecreate()
828 struct vpmap *vpm; in vpm_map_pages() local
931 vpm = get_vpmap(pplist[i]); in vpm_map_pages()
932 vml[i].vs_data = (void *)&(vpm->vpm_pp); in vpm_map_pages()
955 struct vpmap *vpm; in vpm_unmap_pages() local
980 vpm = (struct vpmap *)((char *)vml[i].vs_data in vpm_unmap_pages()
984 mtx = VPMAPMTX(vpm); in vpm_unmap_pages()
987 if (--vpm->vpm_refcnt == 0) { in vpm_unmap_pages()
988 free_vpmap(vpm); in vpm_unmap_pages()