Lines Matching refs:amp
547 struct anon_map *amp; in segvn_create() local
565 if (a->amp != NULL && a->vp != NULL) { in segvn_create()
582 (a->amp != NULL && a->type == MAP_PRIVATE) || in segvn_create()
604 } else if (a->amp != NULL) { in segvn_create()
617 if (!(a->flags & MAP_NORESERVE) && ((a->vp == NULL && a->amp == NULL) || in segvn_create()
692 if (a->amp == NULL && !use_rgn && !trok) { in segvn_create()
743 segvn_comb_thrshld || psvd->amp == NULL) && in segvn_create()
847 amp = a->amp; in segvn_create()
848 if ((svd->amp = amp) == NULL) { in segvn_create()
860 svd->amp = anonmap_alloc(seg->s_size, swresv, in segvn_create()
862 svd->amp->a_szc = seg->s_szc; in segvn_create()
884 if ((amp->size - a->offset) < seg->s_size) { in segvn_create()
895 ANON_LOCK_ENTER(&->a_rwlock, RW_WRITER); in segvn_create()
896 amp->refcnt++; in segvn_create()
897 if (a->szc > amp->a_szc) { in segvn_create()
898 amp->a_szc = a->szc; in segvn_create()
900 ANON_LOCK_EXIT(&->a_rwlock); in segvn_create()
923 svd->amp = anonmap_alloc(seg->s_size, 0, ANON_SLEEP); in segvn_create()
924 svd->amp->a_szc = seg->s_szc; in segvn_create()
932 ANON_LOCK_ENTER(&->a_rwlock, RW_WRITER); in segvn_create()
939 if ((ap = anon_get_ptr(amp->ahp, in segvn_create()
958 ASSERT(anon_get_ptr(amp->ahp, in segvn_create()
960 (void) anon_set_ptr(amp->ahp, anon_idx, ap, in segvn_create()
973 anon_dup(amp->ahp, anon_num, svd->amp->ahp, in segvn_create()
975 ANON_LOCK_EXIT(&->a_rwlock); in segvn_create()
988 (void) lgrp_shm_policy_set(mpolicy, svd->amp, svd->anon_index, in segvn_create()
993 ASSERT(svd->amp == NULL); in segvn_create()
1017 struct anon_map *amp1 = svd1->amp; in segvn_concat()
1018 struct anon_map *amp2 = svd2->amp; in segvn_concat()
1147 svd2->amp = NULL; in segvn_concat()
1210 svd2->amp = NULL; /* needed for seg_free */ in segvn_concat()
1214 svd1->amp = namp; in segvn_concat()
1293 amp1 = svd1->amp;
1413 amp2 = svd2->amp; in segvn_extend_next()
1522 if ((ap = anon_get_ptr(svd->amp->ahp, old_idx)) != NULL) { in segvn_dup_pages()
1556 (void) anon_set_ptr(newsvd->amp->ahp, new_idx, newap, in segvn_dup_pages()
1576 struct anon_map *amp; in segvn_dup() local
1628 if ((amp = svd->amp) == NULL || svd->tr_state == SEGVN_TR_ON) { in segvn_dup()
1635 ASSERT(newsvd->vp != NULL && amp != NULL); in segvn_dup()
1640 newsvd->amp = NULL; in segvn_dup()
1649 newsvd->amp = amp; in segvn_dup()
1650 ANON_LOCK_ENTER(&->a_rwlock, RW_WRITER); in segvn_dup()
1651 amp->refcnt++; in segvn_dup()
1652 ANON_LOCK_EXIT(&->a_rwlock); in segvn_dup()
1660 newsvd->amp = anonmap_alloc(newseg->s_size, 0, in segvn_dup()
1662 newsvd->amp->a_szc = newseg->s_szc; in segvn_dup()
1729 anon_dup_fill_holes(amp->ahp, in segvn_dup()
1730 svd->anon_index, newsvd->amp->ahp, in segvn_dup()
1734 anon_dup(amp->ahp, svd->anon_index, in segvn_dup()
1735 newsvd->amp->ahp, 0, seg->s_size); in segvn_dup()
1769 ASSERT(newsvd->amp == NULL); in segvn_dup()
1860 struct anon_map *amp; in segvn_unmap() local
1921 ASSERT(svd->amp == NULL); in segvn_unmap()
1935 ASSERT(svd->amp != NULL); in segvn_unmap()
1937 ASSERT(svd->amp == NULL); in segvn_unmap()
1972 ASSERT(svd->amp == NULL); in segvn_unmap()
1979 ASSERT(svd->amp != NULL); in segvn_unmap()
1982 ASSERT(svd->amp == NULL && svd->tr_state == SEGVN_TR_OFF); in segvn_unmap()
2018 amp = svd->amp; in segvn_unmap()
2019 ASSERT(amp == NULL || amp->a_szc >= seg->s_szc); in segvn_unmap()
2038 if (amp != NULL) { in segvn_unmap()
2039 ANON_LOCK_ENTER(&->a_rwlock, RW_WRITER); in segvn_unmap()
2040 if (amp->refcnt == 1 || svd->type == MAP_PRIVATE) { in segvn_unmap()
2047 ASSERT(amp->refcnt == 1); in segvn_unmap()
2049 anonmap_purge(amp); in segvn_unmap()
2054 if (amp->a_szc == seg->s_szc) { in segvn_unmap()
2056 anon_free_pages(amp->ahp, in segvn_unmap()
2060 anon_free(amp->ahp, in segvn_unmap()
2066 ASSERT(amp->a_szc > seg->s_szc); in segvn_unmap()
2067 anon_shmap_free_pages(amp, in segvn_unmap()
2079 amp->swresv -= len; in segvn_unmap()
2082 ANON_LOCK_EXIT(&->a_rwlock); in segvn_unmap()
2093 ASSERT(amp); in segvn_unmap()
2096 svd->swresv = ptob(anon_pages(amp->ahp, in segvn_unmap()
2145 if (amp != NULL) { in segvn_unmap()
2146 ANON_LOCK_ENTER(&->a_rwlock, RW_WRITER); in segvn_unmap()
2147 if (amp->refcnt == 1 || svd->type == MAP_PRIVATE) { in segvn_unmap()
2159 ASSERT(amp->refcnt == 1); in segvn_unmap()
2161 anonmap_purge(amp); in segvn_unmap()
2164 if (amp->a_szc == seg->s_szc) { in segvn_unmap()
2166 anon_free_pages(amp->ahp, in segvn_unmap()
2170 anon_free(amp->ahp, an_idx, in segvn_unmap()
2175 ASSERT(amp->a_szc > seg->s_szc); in segvn_unmap()
2176 anon_shmap_free_pages(amp, in segvn_unmap()
2188 amp->swresv -= len; in segvn_unmap()
2191 ANON_LOCK_EXIT(&->a_rwlock); in segvn_unmap()
2198 ASSERT(amp); in segvn_unmap()
2200 svd->swresv = ptob(anon_pages(amp->ahp, in segvn_unmap()
2290 if (amp == NULL) { in segvn_unmap()
2291 nsvd->amp = NULL; in segvn_unmap()
2300 ANON_LOCK_ENTER(&->a_rwlock, RW_WRITER); in segvn_unmap()
2301 if (amp->refcnt == 1 || svd->type == MAP_PRIVATE) { in segvn_unmap()
2313 ASSERT(amp->refcnt == 1); in segvn_unmap()
2315 anonmap_purge(amp); in segvn_unmap()
2318 if (amp->a_szc == seg->s_szc) { in segvn_unmap()
2320 anon_free_pages(amp->ahp, an_idx, len, in segvn_unmap()
2323 anon_free(amp->ahp, an_idx, in segvn_unmap()
2328 ASSERT(amp->a_szc > seg->s_szc); in segvn_unmap()
2329 anon_shmap_free_pages(amp, an_idx, len); in segvn_unmap()
2340 amp->swresv -= len; in segvn_unmap()
2346 amp->refcnt++; in segvn_unmap()
2347 nsvd->amp = amp; in segvn_unmap()
2356 (void) anon_copy_ptr(amp->ahp, svd->anon_index, nahp, in segvn_unmap()
2358 (void) anon_copy_ptr(amp->ahp, nsvd->anon_index, in segvn_unmap()
2360 anon_release(amp->ahp, btop(amp->size)); in segvn_unmap()
2363 amp->ahp = nahp; in segvn_unmap()
2364 amp->size = seg->s_size; in segvn_unmap()
2365 nsvd->amp = namp; in segvn_unmap()
2367 ANON_LOCK_EXIT(&->a_rwlock); in segvn_unmap()
2371 ASSERT(amp); in segvn_unmap()
2373 svd->swresv = ptob(anon_pages(amp->ahp, in segvn_unmap()
2375 nsvd->swresv = ptob(anon_pages(nsvd->amp->ahp, in segvn_unmap()
2418 struct anon_map *amp; in segvn_free() local
2444 if ((amp = svd->amp) != NULL) { in segvn_free()
2450 ANON_LOCK_ENTER(&->a_rwlock, RW_WRITER); in segvn_free()
2451 ASSERT(amp->a_szc >= seg->s_szc); in segvn_free()
2452 if (--amp->refcnt == 0) { in segvn_free()
2459 anon_free_pages(amp->ahp, in segvn_free()
2463 anon_free(amp->ahp, svd->anon_index, in segvn_free()
2474 anonmap_purge(amp); in segvn_free()
2481 if (amp->a_szc != 0) { in segvn_free()
2482 anon_shmap_free_pages(amp, 0, in segvn_free()
2483 amp->size); in segvn_free()
2485 anon_free(amp->ahp, 0, amp->size); in segvn_free()
2487 if ((len = amp->swresv) != 0) { in segvn_free()
2494 svd->amp = NULL; in segvn_free()
2495 ANON_LOCK_EXIT(&->a_rwlock); in segvn_free()
2496 anonmap_free(amp); in segvn_free()
2504 anon_free_pages(amp->ahp, svd->anon_index, in segvn_free()
2507 anon_free(amp->ahp, svd->anon_index, in segvn_free()
2510 ANON_LOCK_EXIT(&->a_rwlock); in segvn_free()
2512 ANON_LOCK_EXIT(&->a_rwlock); in segvn_free()
2572 struct anon_map *amp; in segvn_softunlock() local
2578 if ((amp = svd->amp) != NULL) in segvn_softunlock()
2588 if (amp != NULL) { in segvn_softunlock()
2589 ANON_LOCK_ENTER(&->a_rwlock, RW_READER); in segvn_softunlock()
2590 if ((ap = anon_get_ptr(amp->ahp, anon_index++)) in segvn_softunlock()
2598 ANON_LOCK_EXIT(&->a_rwlock); in segvn_softunlock()
2724 struct anon_map *amp; in segvn_faultpage() local
2776 if ((amp = svd->amp) != NULL) { in segvn_faultpage()
2777 ASSERT(RW_READ_HELD(&->a_rwlock)); in segvn_faultpage()
2779 anon_array_enter(amp, anon_index, &cookie); in segvn_faultpage()
2783 if (svd->vp == NULL && amp != NULL) { in segvn_faultpage()
2784 if ((ap = anon_get_ptr(amp->ahp, anon_index)) == NULL) { in segvn_faultpage()
2809 (void) anon_set_ptr(amp->ahp, anon_index, ap, in segvn_faultpage()
2895 if (amp != NULL) { in segvn_faultpage()
2896 if ((ap = anon_get_ptr(amp->ahp, anon_index)) != NULL) { in segvn_faultpage()
2959 ASSERT(amp != NULL); in segvn_faultpage()
2988 ASSERT(amp == NULL || in segvn_faultpage()
3006 ASSERT(amp != NULL && anon_lock); in segvn_faultpage()
3012 if ((ap = anon_get_ptr(amp->ahp, anon_index)) == NULL) in segvn_faultpage()
3097 (void) anon_set_ptr(amp->ahp, anon_index, ap, ANON_SLEEP); in segvn_faultpage()
3829 struct anon_map *amp = svd->amp; in segvn_fault_vnodepages() local
3869 ASSERT(brkcow == 0 || amp != NULL); in segvn_fault_vnodepages()
3870 ASSERT(tron == 0 || amp != NULL); in segvn_fault_vnodepages()
3875 ASSERT(amp == NULL || IS_P2ALIGNED(aindx, maxpages)); in segvn_fault_vnodepages()
3922 VM_STAT_COND_ADD(amp != NULL, segvnvmstats.fltvnpages[3]); in segvn_fault_vnodepages()
3948 if (IS_P2ALIGNED(a, maxpgsz) && amp != NULL) { in segvn_fault_vnodepages()
3950 ANON_LOCK_ENTER(&->a_rwlock, RW_READER); in segvn_fault_vnodepages()
3951 anon_array_enter(amp, aindx, &an_cookie); in segvn_fault_vnodepages()
3952 if (anon_get_ptr(amp->ahp, aindx) != NULL) { in segvn_fault_vnodepages()
3954 ASSERT(anon_pages(amp->ahp, aindx, in segvn_fault_vnodepages()
3957 ANON_LOCK_EXIT(&->a_rwlock); in segvn_fault_vnodepages()
3974 ASSERT(anon_pages(amp->ahp, aindx, in segvn_fault_vnodepages()
3978 ANON_LOCK_EXIT(&->a_rwlock); in segvn_fault_vnodepages()
4113 if (amp != NULL) { in segvn_fault_vnodepages()
4114 ANON_LOCK_ENTER(&->a_rwlock, RW_READER); in segvn_fault_vnodepages()
4115 anon_array_enter(amp, aindx, &an_cookie); in segvn_fault_vnodepages()
4117 if (amp != NULL && in segvn_fault_vnodepages()
4118 anon_get_ptr(amp->ahp, aindx) != NULL) { in segvn_fault_vnodepages()
4122 ASSERT(anon_pages(amp->ahp, taindx, in segvn_fault_vnodepages()
4128 ANON_LOCK_EXIT(&->a_rwlock); in segvn_fault_vnodepages()
4160 if (amp != NULL) { in segvn_fault_vnodepages()
4162 ASSERT(!anon_pages(amp->ahp, taindx, maxpages)); in segvn_fault_vnodepages()
4167 ASSERT(amp != NULL); in segvn_fault_vnodepages()
4173 ierr = anon_map_privatepages(amp, aindx, szc, in segvn_fault_vnodepages()
4179 ANON_LOCK_EXIT(&->a_rwlock); in segvn_fault_vnodepages()
4202 ANON_LOCK_EXIT(&->a_rwlock); in segvn_fault_vnodepages()
4293 if (amp != NULL) { in segvn_fault_vnodepages()
4295 ANON_LOCK_EXIT(&->a_rwlock); in segvn_fault_vnodepages()
4326 if (amp != NULL) { in segvn_fault_vnodepages()
4328 ANON_LOCK_EXIT(&->a_rwlock); in segvn_fault_vnodepages()
4365 if (amp != NULL) { in segvn_fault_vnodepages()
4367 ANON_LOCK_EXIT(&->a_rwlock); in segvn_fault_vnodepages()
4400 if (amp != NULL) { in segvn_fault_vnodepages()
4402 ANON_LOCK_EXIT(&->a_rwlock); in segvn_fault_vnodepages()
4458 if (amp != NULL) { in segvn_fault_vnodepages()
4460 ANON_LOCK_EXIT(&->a_rwlock); in segvn_fault_vnodepages()
4477 if (amp != NULL) { in segvn_fault_vnodepages()
4479 ANON_LOCK_EXIT(&->a_rwlock); in segvn_fault_vnodepages()
4519 if (amp != NULL) { in segvn_fault_vnodepages()
4521 ANON_LOCK_EXIT(&->a_rwlock); in segvn_fault_vnodepages()
4659 struct anon_map *amp = svd->amp; in segvn_fault_anonpages() local
4682 ASSERT(amp != NULL); in segvn_fault_anonpages()
4722 ANON_LOCK_ENTER(&->a_rwlock, RW_READER); in segvn_fault_anonpages()
4750 anon_array_enter(amp, aindx, &cookie); in segvn_fault_anonpages()
4752 ierr = anon_map_getpages(amp, aindx, szc, seg, a, in segvn_fault_anonpages()
4905 ANON_LOCK_EXIT(&->a_rwlock); in segvn_fault_anonpages()
4910 ANON_LOCK_EXIT(&->a_rwlock); in segvn_fault_anonpages()
4957 struct anon_map *amp; in segvn_fault() local
4965 ASSERT(svd->amp == NULL || svd->rcookie == HAT_INVALID_REGION_COOKIE); in segvn_fault()
4991 ASSERT(svd->vp != NULL && svd->amp == NULL); in segvn_fault()
4997 svd->amp != NULL); in segvn_fault()
5011 ASSERT(svd->vp != NULL && svd->amp != NULL); in segvn_fault()
5013 ASSERT(svd->amp == NULL && in segvn_fault()
5018 ASSERT(svd->amp == NULL && svd->tr_state == SEGVN_TR_OFF); in segvn_fault()
5058 ASSERT(svd->amp == NULL); in segvn_fault()
5142 if (svd->amp == NULL && (svd->vp == NULL || brkcow)) { in segvn_fault()
5152 if (svd->amp == NULL) { in segvn_fault()
5153 svd->amp = anonmap_alloc(seg->s_size, 0, ANON_SLEEP); in segvn_fault()
5154 svd->amp->a_szc = seg->s_szc; in segvn_fault()
5176 amp = svd->amp; in segvn_fault()
5203 if (amp != NULL) { in segvn_fault()
5213 ANON_LOCK_ENTER(&->a_rwlock, RW_READER); in segvn_fault()
5224 anon_array_enter(amp, index, &cookie); in segvn_fault()
5225 ap = anon_get_ptr(amp->ahp, index); in segvn_fault()
5228 ANON_LOCK_EXIT(&->a_rwlock); in segvn_fault()
5233 ANON_LOCK_EXIT(&->a_rwlock); in segvn_fault()
5268 if (amp != NULL) in segvn_fault()
5282 if (amp != NULL) { in segvn_fault()
5283 ANON_LOCK_ENTER(&->a_rwlock, in segvn_fault()
5285 anon_array_enter(amp, fanon_index, in segvn_fault()
5287 fap = anon_get_ptr(amp->ahp, in segvn_fault()
5296 ANON_LOCK_EXIT(&->a_rwlock); in segvn_fault()
5368 if (amp == NULL) in segvn_fault()
5376 ANON_LOCK_ENTER(&->a_rwlock, RW_READER); in segvn_fault()
5377 ap = anon_get_ptr(amp->ahp, anon_index); in segvn_fault()
5383 dogetpage = non_anon(amp->ahp, anon_index, in segvn_fault()
5385 ANON_LOCK_EXIT(&->a_rwlock); in segvn_fault()
5499 if (amp != NULL) in segvn_fault()
5500 ANON_LOCK_ENTER(&->a_rwlock, RW_READER); in segvn_fault()
5509 if (amp != NULL) in segvn_fault()
5510 ANON_LOCK_EXIT(&->a_rwlock); in segvn_fault()
5588 if (amp != NULL) { in segvn_fault()
5590 anon_array_enter(amp, anon_index, &cookie); in segvn_fault()
5591 ap = anon_get_ptr(amp->ahp, anon_index); in segvn_fault()
5593 if ((amp == NULL) || (ap == NULL)) { in segvn_fault()
5607 ASSERT(amp == NULL || in segvn_fault()
5616 if (amp != NULL) in segvn_fault()
5622 if (amp != NULL) in segvn_fault()
5623 ANON_LOCK_EXIT(&->a_rwlock); in segvn_fault()
5640 struct anon_map *amp; in segvn_faulta() local
5646 if ((amp = svd->amp) != NULL) { in segvn_faulta()
5654 ANON_LOCK_ENTER(&->a_rwlock, RW_READER); in segvn_faulta()
5655 if ((ap = anon_get_ptr(amp->ahp, in segvn_faulta()
5661 ANON_LOCK_EXIT(&->a_rwlock); in segvn_faulta()
5667 ANON_LOCK_EXIT(&->a_rwlock); in segvn_faulta()
5744 ASSERT(svd->amp == NULL); in segvn_setprot()
5753 ASSERT(svd->amp != NULL); in segvn_setprot()
5755 ASSERT(svd->amp == NULL && svd->tr_state == SEGVN_TR_OFF); in segvn_setprot()
5897 svd->amp == NULL && addr == seg->s_base && in segvn_setprot()
5919 struct anon_map *amp; in segvn_setprot() local
5937 if ((amp = svd->amp) != NULL) { in segvn_setprot()
5941 ANON_LOCK_ENTER(&->a_rwlock, RW_READER); in segvn_setprot()
5954 if (amp != NULL) { in segvn_setprot()
5955 anon_array_enter(amp, anon_idx, in segvn_setprot()
5961 if (amp != NULL) { in segvn_setprot()
5966 if (amp != NULL) { in segvn_setprot()
5971 if (amp != NULL) { in segvn_setprot()
5972 anon_array_enter(amp, anon_idx, in segvn_setprot()
5974 ap = anon_get_ptr(amp->ahp, anon_idx++); in segvn_setprot()
5980 if (amp == NULL || ap == NULL) { in segvn_setprot()
5985 if (amp != NULL) in segvn_setprot()
6011 } else if (amp != NULL) in segvn_setprot()
6017 if (amp != NULL) in segvn_setprot()
6018 ANON_LOCK_EXIT(&->a_rwlock); in segvn_setprot()
6095 struct anon_map *amp = svd->amp; in segvn_setpagesize() local
6125 if (amp != NULL && svd->type == MAP_SHARED) { in segvn_setpagesize()
6197 ASSERT(svd->amp == NULL); in segvn_setpagesize()
6205 ASSERT(svd->amp != NULL); in segvn_setpagesize()
6207 ASSERT(svd->amp == NULL && svd->tr_state == SEGVN_TR_OFF); in segvn_setpagesize()
6208 amp = NULL; in segvn_setpagesize()
6300 if (amp != NULL) { in segvn_setpagesize()
6306 ANON_LOCK_ENTER(&->a_rwlock, RW_WRITER); in segvn_setpagesize()
6307 ASSERT(amp->refcnt == 1); in segvn_setpagesize()
6308 nahp = anon_create(btop(amp->size), ANON_NOSLEEP); in segvn_setpagesize()
6310 ANON_LOCK_EXIT(&->a_rwlock); in segvn_setpagesize()
6313 if (anon_copy_ptr(amp->ahp, svd->anon_index, in segvn_setpagesize()
6315 anon_release(nahp, btop(amp->size)); in segvn_setpagesize()
6316 ANON_LOCK_EXIT(&->a_rwlock); in segvn_setpagesize()
6319 anon_release(amp->ahp, btop(amp->size)); in segvn_setpagesize()
6320 amp->ahp = nahp; in segvn_setpagesize()
6322 ANON_LOCK_EXIT(&->a_rwlock); in segvn_setpagesize()
6339 if (amp != NULL) { in segvn_setpagesize()
6349 amp->ahp, svd->anon_index, svd->vp, svd->offset, in segvn_setpagesize()
6358 if (amp != NULL) { in segvn_setpagesize()
6359 ANON_LOCK_ENTER(&->a_rwlock, RW_WRITER); in segvn_setpagesize()
6361 amp->a_szc = szc; in segvn_setpagesize()
6362 } else if (szc > amp->a_szc) { in segvn_setpagesize()
6363 amp->a_szc = szc; in segvn_setpagesize()
6365 ANON_LOCK_EXIT(&->a_rwlock); in segvn_setpagesize()
6377 struct anon_map *amp = svd->amp; in segvn_clrszc() local
6395 if (vp == NULL && amp == NULL) { in segvn_clrszc()
6402 ASSERT(svd->amp == NULL); in segvn_clrszc()
6408 ASSERT(svd->amp != NULL); in segvn_clrszc()
6410 ASSERT(svd->amp == NULL && svd->tr_state == SEGVN_TR_OFF); in segvn_clrszc()
6411 amp = NULL; in segvn_clrszc()
6427 if (amp == NULL || svd->type == MAP_SHARED) { in segvn_clrszc()
6439 ANON_LOCK_ENTER(&->a_rwlock, RW_WRITER); in segvn_clrszc()
6442 if ((oldap = anon_get_ptr(amp->ahp, an_idx)) != NULL) { in segvn_clrszc()
6450 ASSERT(vp == NULL || anon_pages(amp->ahp, in segvn_clrszc()
6452 if ((err = anon_map_demotepages(amp, an_idx, in segvn_clrszc()
6471 (void) anon_set_ptr(amp->ahp, an_idx, ap, in segvn_clrszc()
6479 amp->a_szc = 0; in segvn_clrszc()
6482 ANON_LOCK_EXIT(&->a_rwlock); in segvn_clrszc()
6498 struct anon_map *amp = svd->amp; in segvn_claim_pages() local
6508 int anon = (amp != NULL) ? 1 : 0; in segvn_claim_pages()
6514 ASSERT(amp == NULL || IS_P2ALIGNED(anon_idx, pgcnt)); in segvn_claim_pages()
6524 if (anon_get_ptr(amp->ahp, anon_idx) == NULL) { in segvn_claim_pages()
6526 ASSERT(!anon_pages(amp->ahp, anon_idx, pgcnt)); in segvn_claim_pages()
6529 anon_pages(amp->ahp, anon_idx, pgcnt) == pgcnt); in segvn_claim_pages()
6536 ap = anon_get_ptr(amp->ahp, anon_idx); in segvn_claim_pages()
6663 if (svd->amp != NULL && svd->type == MAP_PRIVATE) { in segvn_split_seg()
6664 struct anon_map *oamp = svd->amp, *namp; in segvn_split_seg()
6682 nsvd->amp = namp; in segvn_split_seg()
6685 } else if (svd->amp != NULL) { in segvn_split_seg()
6687 ASSERT(svd->amp == nsvd->amp); in segvn_split_seg()
6688 ASSERT(seg->s_szc <= svd->amp->a_szc); in segvn_split_seg()
6691 ANON_LOCK_ENTER(&svd->amp->a_rwlock, RW_WRITER); in segvn_split_seg()
6692 svd->amp->refcnt++; in segvn_split_seg()
6693 ANON_LOCK_EXIT(&svd->amp->a_rwlock); in segvn_split_seg()
6708 ASSERT(svd->amp); in segvn_split_seg()
6710 svd->swresv = ptob(anon_pages(svd->amp->ahp, in segvn_split_seg()
6712 nsvd->swresv = ptob(anon_pages(nsvd->amp->ahp, in segvn_split_seg()
6995 struct anon_map *amp; in segvn_kluster() local
7033 if ((amp = svd->amp) == NULL) in segvn_kluster()
7038 ANON_LOCK_ENTER(&->a_rwlock, RW_READER); in segvn_kluster()
7040 oap = anon_get_ptr(amp->ahp, page); in segvn_kluster()
7041 ap = anon_get_ptr(amp->ahp, page + pd); in segvn_kluster()
7043 ANON_LOCK_EXIT(&->a_rwlock); in segvn_kluster()
7097 struct anon_map *amp; in segvn_swapout() local
7110 if ((amp = svd->amp) != NULL) in segvn_swapout()
7127 if (amp != NULL) { in segvn_swapout()
7128 ANON_LOCK_ENTER(&->a_rwlock, RW_READER); in segvn_swapout()
7129 if (anon_array_try_enter(amp, anon_index + page, in segvn_swapout()
7131 ANON_LOCK_EXIT(&->a_rwlock); in segvn_swapout()
7134 ap = anon_get_ptr(amp->ahp, anon_index + page); in segvn_swapout()
7142 ANON_LOCK_EXIT(&->a_rwlock); in segvn_swapout()
7278 struct anon_map *amp; in segvn_sync() local
7315 } else if (svd->type == MAP_SHARED && svd->amp != NULL && in segvn_sync()
7316 svd->amp->a_softlockcnt > 0) { in segvn_sync()
7323 if (svd->amp->a_softlockcnt > 0 || svd->softlockcnt > 0) { in segvn_sync()
7356 } else if (svd->vp && svd->amp == NULL && in segvn_sync()
7369 if ((amp = svd->amp) != NULL) in segvn_sync()
7374 if (amp != NULL) { in segvn_sync()
7375 ANON_LOCK_ENTER(&->a_rwlock, RW_READER); in segvn_sync()
7376 anon_array_enter(amp, anon_index, &cookie); in segvn_sync()
7377 ap = anon_get_ptr(amp->ahp, anon_index++); in segvn_sync()
7385 ANON_LOCK_EXIT(&->a_rwlock); in segvn_sync()
7438 } else if (svd->type == MAP_SHARED && amp != NULL) { in segvn_sync()
7499 struct anon_map *amp; /* XXX - for locknest */ in segvn_incore() local
7507 if (svd->amp == NULL && svd->vp == NULL) { in segvn_incore()
7517 amp = svd->amp; in segvn_incore()
7524 if (amp != NULL) { in segvn_incore()
7525 ANON_LOCK_ENTER(&->a_rwlock, RW_READER); in segvn_incore()
7526 anon_array_enter(amp, svd->anon_index + p, &cookie); in segvn_incore()
7527 ap = anon_get_ptr(amp->ahp, svd->anon_index + p); in segvn_incore()
7532 ANON_LOCK_EXIT(&->a_rwlock); in segvn_incore()
7664 struct anon_map *amp; in segvn_lockop() local
7688 if (svd->amp != NULL && svd->amp->a_sp != NULL) { in segvn_lockop()
7691 sp = svd->amp->a_sp; in segvn_lockop()
7720 ASSERT(svd->amp != NULL); in segvn_lockop()
7722 ASSERT(svd->amp == NULL && in segvn_lockop()
7751 if (op == MC_LOCK && svd->amp == NULL && svd->vp == NULL) { in segvn_lockop()
7753 svd->amp = anonmap_alloc(seg->s_size, 0, ANON_SLEEP); in segvn_lockop()
7754 svd->amp->a_szc = seg->s_szc; in segvn_lockop()
7757 if ((amp = svd->amp) != NULL) { in segvn_lockop()
7785 ANON_LOCK_ENTER(&->a_rwlock, RW_READER); in segvn_lockop()
7787 anon_array_enter(amp, i_idx, &i_cookie); in segvn_lockop()
7788 i_ap = anon_get_ptr(amp->ahp, i_idx); in segvn_lockop()
7804 ANON_LOCK_EXIT(&->a_rwlock); in segvn_lockop()
7830 if (amp != NULL) in segvn_lockop()
7831 ANON_LOCK_ENTER(&->a_rwlock, RW_READER); in segvn_lockop()
7839 amp != NULL && in segvn_lockop()
7840 ((ap = anon_get_ptr(amp->ahp, anon_index)) in segvn_lockop()
7842 anon_array_enter(amp, anon_index, &cookie); in segvn_lockop()
7844 if ((ap = anon_get_ptr(amp->ahp, in segvn_lockop()
7850 ANON_LOCK_EXIT(&->a_rwlock); in segvn_lockop()
7854 ASSERT(anon_get_ptr(amp->ahp, in segvn_lockop()
7856 (void) anon_set_ptr(amp->ahp, in segvn_lockop()
7868 if (amp != NULL) { in segvn_lockop()
7869 anon_array_enter(amp, anon_index, &cookie); in segvn_lockop()
7870 ap = anon_get_ptr(amp->ahp, anon_index); in segvn_lockop()
7877 ANON_LOCK_EXIT(&->a_rwlock); in segvn_lockop()
7885 ANON_LOCK_EXIT(&->a_rwlock); in segvn_lockop()
7916 ANON_LOCK_EXIT(&->a_rwlock); in segvn_lockop()
7995 ANON_LOCK_EXIT(&->a_rwlock); in segvn_lockop()
8090 struct anon_map *amp; in segvn_advise() local
8166 } else if (svd->type == MAP_SHARED && svd->amp != NULL && in segvn_advise()
8167 svd->amp->a_softlockcnt > 0) { in segvn_advise()
8177 amp = svd->amp; in segvn_advise()
8182 if (behav == MADV_FREE && (vp != NULL || amp == NULL)) { in segvn_advise()
8194 if (amp == NULL) { in segvn_advise()
8208 ANON_LOCK_ENTER(&->a_rwlock, RW_READER); in segvn_advise()
8209 err = anon_disclaim(amp, in segvn_advise()
8228 ANON_LOCK_EXIT(&->a_rwlock); in segvn_advise()
8255 already_set = lgrp_shm_policy_set(policy, amp, in segvn_advise()
8284 page_mark_migrate(seg, addr, len, amp, svd->anon_index, in segvn_advise()
8394 already_set = lgrp_shm_policy_set(policy, amp, in segvn_advise()
8423 page_mark_migrate(seg, addr, len, amp, svd->anon_index, in segvn_advise()
8435 ASSERT(svd->amp == NULL); in segvn_advise()
8722 struct anon_map *amp; in segvn_dump() local
8736 if ((amp = svd->amp) != NULL) { in segvn_dump()
8738 ANON_LOCK_ENTER(&->a_rwlock, RW_READER); in segvn_dump()
8745 if (amp && (ap = anon_get_ptr(svd->amp->ahp, anon_index++))) { in segvn_dump()
8773 if (amp != NULL) in segvn_dump()
8774 ANON_LOCK_EXIT(&->a_rwlock); in segvn_dump()
8837 struct anon_map *amp; in segvn_pagelock() local
8888 if ((amp = svd->amp) == NULL) { in segvn_pagelock()
9048 pamp = amp; in segvn_pagelock()
9316 ANON_LOCK_ENTER(&->a_rwlock, RW_READER); in segvn_pagelock()
9317 ASSERT(amp->a_szc >= seg->s_szc); in segvn_pagelock()
9318 anpgcnt = page_get_pagecnt(amp->a_szc); in segvn_pagelock()
9334 anon_array_enter(amp, anon_index, &cookie); in segvn_pagelock()
9337 ap = anon_get_ptr(amp->ahp, anon_index); in segvn_pagelock()
9370 anon_array_enter(amp, anon_index, &cookie); in segvn_pagelock()
9372 ap = anon_get_ptr(amp->ahp, anon_index); in segvn_pagelock()
9400 ANON_LOCK_EXIT(&->a_rwlock); in segvn_pagelock()
9454 if (svd->amp == NULL || svd->vp != NULL) { in segvn_purge()
9467 } else if (svd->softlockcnt == 0 && svd->amp->a_softlockcnt != 0) { in segvn_purge()
9468 seg_ppurge(seg, svd->amp, 0); in segvn_purge()
9490 ASSERT(svd->vp == NULL && svd->amp != NULL); in segvn_reclaim()
9559 amp_t *amp = (amp_t *)ptag; in shamp_reclaim() local
9565 ASSERT(amp->a_softlockcnt >= npages); in shamp_reclaim()
9590 mutex_enter(&->a_purgemtx); in shamp_reclaim()
9591 if (!atomic_add_long_nv((ulong_t *)&->a_softlockcnt, -npages) && in shamp_reclaim()
9592 amp->a_purgewait) { in shamp_reclaim()
9593 amp->a_purgewait = 0; in shamp_reclaim()
9594 cv_broadcast(&->a_purgecv); in shamp_reclaim()
9596 mutex_exit(&->a_purgemtx); in shamp_reclaim()
9612 struct anon_map *amp; in segvn_getmemid() local
9630 if ((amp = svd->amp) != NULL) { in segvn_getmemid()
9636 ASSERT(amp != NULL); in segvn_getmemid()
9638 ANON_LOCK_ENTER(&->a_rwlock, RW_READER); in segvn_getmemid()
9639 anon_array_enter(amp, anon_index, &cookie); in segvn_getmemid()
9640 ap = anon_get_ptr(amp->ahp, anon_index); in segvn_getmemid()
9647 ANON_LOCK_EXIT(&->a_rwlock); in segvn_getmemid()
9650 ASSERT(anon_get_ptr(amp->ahp, anon_index) in segvn_getmemid()
9652 (void) anon_set_ptr(amp->ahp, anon_index, in segvn_getmemid()
9658 ANON_LOCK_EXIT(&->a_rwlock); in segvn_getmemid()
9699 struct anon_map *amp; in segvn_getpolicy() local
9724 amp = svn_data->amp; in segvn_getpolicy()
9728 policy_info = lgrp_shm_policy_get(amp, anon_index, vp, vn_off); in segvn_getpolicy()
9768 struct anon_map *amp; in segvn_textrepl() local
9777 ASSERT(vp != NULL && svd->amp == NULL); in segvn_textrepl()
9972 if ((amp = svntrp->tr_amp[lgrp_id]) == NULL) { in segvn_textrepl()
9982 amp = anonmap_alloc(size, size, ANON_NOSLEEP); in segvn_textrepl()
9983 if (amp == NULL) { in segvn_textrepl()
9988 ASSERT(amp->refcnt == 1); in segvn_textrepl()
9989 amp->a_szc = szc; in segvn_textrepl()
9990 svntrp->tr_amp[lgrp_id] = amp; in segvn_textrepl()
10002 ASSERT(amp->a_szc == szc && amp->size == size && amp->swresv == size); in segvn_textrepl()
10003 ASSERT(amp->refcnt >= 1); in segvn_textrepl()
10004 svd->amp = amp; in segvn_textrepl()
10056 ASSERT(svd->amp != NULL); in segvn_textunrepl()
10057 ASSERT(svd->amp->refcnt >= 1); in segvn_textunrepl()
10074 if (svntrp->tr_amp[lgrp_id] != svd->amp) { in segvn_textunrepl()
10078 svd->amp = NULL; in segvn_textunrepl()
10101 struct anon_map *amp = svntrp->tr_amp[i]; in segvn_textunrepl() local
10102 if (amp == NULL) { in segvn_textunrepl()
10105 ASSERT(amp->refcnt == 1); in segvn_textunrepl()
10106 ASSERT(amp->swresv == size); in segvn_textunrepl()
10107 ASSERT(amp->size == size); in segvn_textunrepl()
10108 ASSERT(amp->a_szc == szc); in segvn_textunrepl()
10109 if (amp->a_szc != 0) { in segvn_textunrepl()
10110 anon_free_pages(amp->ahp, 0, size, szc); in segvn_textunrepl()
10112 anon_free(amp->ahp, 0, size); in segvn_textunrepl()
10117 anon_unresv_zone(amp->swresv, NULL); in segvn_textunrepl()
10118 amp->refcnt = 0; in segvn_textunrepl()
10119 anonmap_free(amp); in segvn_textunrepl()
10239 struct anon_map *amp; in segvn_trupdate_seg() local
10251 ASSERT(svd->amp != NULL); in segvn_trupdate_seg()
10255 ASSERT(svntrp->tr_amp[svd->tr_policy_info.mem_lgrpid] == svd->amp); in segvn_trupdate_seg()
10309 amp = anonmap_alloc(size, size, KM_NOSLEEP); in segvn_trupdate_seg()
10310 if (amp == NULL) { in segvn_trupdate_seg()
10318 ASSERT(amp->refcnt == 1); in segvn_trupdate_seg()
10319 amp->a_szc = seg->s_szc; in segvn_trupdate_seg()
10320 svntrp->tr_amp[lgrp_id] = amp; in segvn_trupdate_seg()
10335 ASSERT(svd->amp != NULL); in segvn_trupdate_seg()
10338 ASSERT(svd->amp != svntrp->tr_amp[lgrp_id]); in segvn_trupdate_seg()
10341 svd->amp = svntrp->tr_amp[lgrp_id]; in segvn_trupdate_seg()
10349 ASSERT(svd->amp != NULL && svd->amp == svntrp->tr_amp[lgrp_id]); in segvn_trupdate_seg()