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(&amp->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(&amp->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(&amp->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(&amp->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(&amp->a_rwlock, RW_WRITER); in segvn_dup()
1651 amp->refcnt++; in segvn_dup()
1652 ANON_LOCK_EXIT(&amp->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(&amp->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(&amp->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(&amp->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(&amp->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(&amp->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(&amp->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(&amp->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(&amp->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(&amp->a_rwlock); in segvn_free()
2512 ANON_LOCK_EXIT(&amp->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(&amp->a_rwlock, RW_READER); in segvn_softunlock()
2590 if ((ap = anon_get_ptr(amp->ahp, anon_index++)) in segvn_softunlock()
2598 ANON_LOCK_EXIT(&amp->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(&amp->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
3868 ASSERT(brkcow == 0 || amp != NULL); in segvn_fault_vnodepages()
3869 ASSERT(tron == 0 || amp != NULL); in segvn_fault_vnodepages()
3874 ASSERT(amp == NULL || IS_P2ALIGNED(aindx, maxpages)); in segvn_fault_vnodepages()
3917 VM_STAT_COND_ADD(amp != NULL, segvnvmstats.fltvnpages[3]); in segvn_fault_vnodepages()
3943 if (IS_P2ALIGNED(a, maxpgsz) && amp != NULL) { in segvn_fault_vnodepages()
3945 ANON_LOCK_ENTER(&amp->a_rwlock, RW_READER); in segvn_fault_vnodepages()
3946 anon_array_enter(amp, aindx, &an_cookie); in segvn_fault_vnodepages()
3947 if (anon_get_ptr(amp->ahp, aindx) != NULL) { in segvn_fault_vnodepages()
3949 ASSERT(anon_pages(amp->ahp, aindx, in segvn_fault_vnodepages()
3952 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_fault_vnodepages()
3969 ASSERT(anon_pages(amp->ahp, aindx, in segvn_fault_vnodepages()
3973 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_fault_vnodepages()
4108 if (amp != NULL) { in segvn_fault_vnodepages()
4109 ANON_LOCK_ENTER(&amp->a_rwlock, RW_READER); in segvn_fault_vnodepages()
4110 anon_array_enter(amp, aindx, &an_cookie); in segvn_fault_vnodepages()
4112 if (amp != NULL && in segvn_fault_vnodepages()
4113 anon_get_ptr(amp->ahp, aindx) != NULL) { in segvn_fault_vnodepages()
4117 ASSERT(anon_pages(amp->ahp, taindx, in segvn_fault_vnodepages()
4123 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_fault_vnodepages()
4155 if (amp != NULL) { in segvn_fault_vnodepages()
4157 ASSERT(!anon_pages(amp->ahp, taindx, maxpages)); in segvn_fault_vnodepages()
4162 ASSERT(amp != NULL); in segvn_fault_vnodepages()
4168 ierr = anon_map_privatepages(amp, aindx, szc, in segvn_fault_vnodepages()
4174 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_fault_vnodepages()
4197 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_fault_vnodepages()
4272 if (amp != NULL) { in segvn_fault_vnodepages()
4274 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_fault_vnodepages()
4305 if (amp != NULL) { in segvn_fault_vnodepages()
4307 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_fault_vnodepages()
4344 if (amp != NULL) { in segvn_fault_vnodepages()
4346 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_fault_vnodepages()
4379 if (amp != NULL) { in segvn_fault_vnodepages()
4381 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_fault_vnodepages()
4437 if (amp != NULL) { in segvn_fault_vnodepages()
4439 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_fault_vnodepages()
4456 if (amp != NULL) { in segvn_fault_vnodepages()
4458 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_fault_vnodepages()
4498 if (amp != NULL) { in segvn_fault_vnodepages()
4500 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_fault_vnodepages()
4638 struct anon_map *amp = svd->amp; in segvn_fault_anonpages() local
4661 ASSERT(amp != NULL); in segvn_fault_anonpages()
4701 ANON_LOCK_ENTER(&amp->a_rwlock, RW_READER); in segvn_fault_anonpages()
4729 anon_array_enter(amp, aindx, &cookie); in segvn_fault_anonpages()
4731 ierr = anon_map_getpages(amp, aindx, szc, seg, a, in segvn_fault_anonpages()
4884 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_fault_anonpages()
4889 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_fault_anonpages()
4936 struct anon_map *amp; in segvn_fault() local
4944 ASSERT(svd->amp == NULL || svd->rcookie == HAT_INVALID_REGION_COOKIE); in segvn_fault()
4970 ASSERT(svd->vp != NULL && svd->amp == NULL); in segvn_fault()
4976 svd->amp != NULL); in segvn_fault()
4990 ASSERT(svd->vp != NULL && svd->amp != NULL); in segvn_fault()
4992 ASSERT(svd->amp == NULL && in segvn_fault()
4997 ASSERT(svd->amp == NULL && svd->tr_state == SEGVN_TR_OFF); in segvn_fault()
5037 ASSERT(svd->amp == NULL); in segvn_fault()
5121 if (svd->amp == NULL && (svd->vp == NULL || brkcow)) { in segvn_fault()
5131 if (svd->amp == NULL) { in segvn_fault()
5132 svd->amp = anonmap_alloc(seg->s_size, 0, ANON_SLEEP); in segvn_fault()
5133 svd->amp->a_szc = seg->s_szc; in segvn_fault()
5155 amp = svd->amp; in segvn_fault()
5182 if (amp != NULL) { in segvn_fault()
5192 ANON_LOCK_ENTER(&amp->a_rwlock, RW_READER); in segvn_fault()
5203 anon_array_enter(amp, index, &cookie); in segvn_fault()
5204 ap = anon_get_ptr(amp->ahp, index); in segvn_fault()
5207 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_fault()
5212 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_fault()
5247 if (amp != NULL) in segvn_fault()
5261 if (amp != NULL) { in segvn_fault()
5262 ANON_LOCK_ENTER(&amp->a_rwlock, in segvn_fault()
5264 anon_array_enter(amp, fanon_index, in segvn_fault()
5266 fap = anon_get_ptr(amp->ahp, in segvn_fault()
5275 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_fault()
5347 if (amp == NULL) in segvn_fault()
5355 ANON_LOCK_ENTER(&amp->a_rwlock, RW_READER); in segvn_fault()
5356 ap = anon_get_ptr(amp->ahp, anon_index); in segvn_fault()
5362 dogetpage = non_anon(amp->ahp, anon_index, in segvn_fault()
5364 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_fault()
5478 if (amp != NULL) in segvn_fault()
5479 ANON_LOCK_ENTER(&amp->a_rwlock, RW_READER); in segvn_fault()
5488 if (amp != NULL) in segvn_fault()
5489 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_fault()
5567 if (amp != NULL) { in segvn_fault()
5569 anon_array_enter(amp, anon_index, &cookie); in segvn_fault()
5570 ap = anon_get_ptr(amp->ahp, anon_index); in segvn_fault()
5572 if ((amp == NULL) || (ap == NULL)) { in segvn_fault()
5586 ASSERT(amp == NULL || in segvn_fault()
5595 if (amp != NULL) in segvn_fault()
5601 if (amp != NULL) in segvn_fault()
5602 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_fault()
5619 struct anon_map *amp; in segvn_faulta() local
5625 if ((amp = svd->amp) != NULL) { in segvn_faulta()
5633 ANON_LOCK_ENTER(&amp->a_rwlock, RW_READER); in segvn_faulta()
5634 if ((ap = anon_get_ptr(amp->ahp, in segvn_faulta()
5640 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_faulta()
5646 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_faulta()
5723 ASSERT(svd->amp == NULL); in segvn_setprot()
5732 ASSERT(svd->amp != NULL); in segvn_setprot()
5734 ASSERT(svd->amp == NULL && svd->tr_state == SEGVN_TR_OFF); in segvn_setprot()
5876 svd->amp == NULL && addr == seg->s_base && in segvn_setprot()
5898 struct anon_map *amp; in segvn_setprot() local
5916 if ((amp = svd->amp) != NULL) { in segvn_setprot()
5920 ANON_LOCK_ENTER(&amp->a_rwlock, RW_READER); in segvn_setprot()
5933 if (amp != NULL) { in segvn_setprot()
5934 anon_array_enter(amp, anon_idx, in segvn_setprot()
5940 if (amp != NULL) { in segvn_setprot()
5945 if (amp != NULL) { in segvn_setprot()
5950 if (amp != NULL) { in segvn_setprot()
5951 anon_array_enter(amp, anon_idx, in segvn_setprot()
5953 ap = anon_get_ptr(amp->ahp, anon_idx++); in segvn_setprot()
5959 if (amp == NULL || ap == NULL) { in segvn_setprot()
5964 if (amp != NULL) in segvn_setprot()
5990 } else if (amp != NULL) in segvn_setprot()
5996 if (amp != NULL) in segvn_setprot()
5997 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_setprot()
6074 struct anon_map *amp = svd->amp; in segvn_setpagesize() local
6104 if (amp != NULL && svd->type == MAP_SHARED) { in segvn_setpagesize()
6176 ASSERT(svd->amp == NULL); in segvn_setpagesize()
6184 ASSERT(svd->amp != NULL); in segvn_setpagesize()
6186 ASSERT(svd->amp == NULL && svd->tr_state == SEGVN_TR_OFF); in segvn_setpagesize()
6187 amp = NULL; in segvn_setpagesize()
6279 if (amp != NULL) { in segvn_setpagesize()
6285 ANON_LOCK_ENTER(&amp->a_rwlock, RW_WRITER); in segvn_setpagesize()
6286 ASSERT(amp->refcnt == 1); in segvn_setpagesize()
6287 nahp = anon_create(btop(amp->size), ANON_NOSLEEP); in segvn_setpagesize()
6289 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_setpagesize()
6292 if (anon_copy_ptr(amp->ahp, svd->anon_index, in segvn_setpagesize()
6294 anon_release(nahp, btop(amp->size)); in segvn_setpagesize()
6295 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_setpagesize()
6298 anon_release(amp->ahp, btop(amp->size)); in segvn_setpagesize()
6299 amp->ahp = nahp; in segvn_setpagesize()
6301 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_setpagesize()
6318 if (amp != NULL) { in segvn_setpagesize()
6328 amp->ahp, svd->anon_index, svd->vp, svd->offset, in segvn_setpagesize()
6337 if (amp != NULL) { in segvn_setpagesize()
6338 ANON_LOCK_ENTER(&amp->a_rwlock, RW_WRITER); in segvn_setpagesize()
6340 amp->a_szc = szc; in segvn_setpagesize()
6341 } else if (szc > amp->a_szc) { in segvn_setpagesize()
6342 amp->a_szc = szc; in segvn_setpagesize()
6344 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_setpagesize()
6356 struct anon_map *amp = svd->amp; in segvn_clrszc() local
6374 if (vp == NULL && amp == NULL) { in segvn_clrszc()
6381 ASSERT(svd->amp == NULL); in segvn_clrszc()
6387 ASSERT(svd->amp != NULL); in segvn_clrszc()
6389 ASSERT(svd->amp == NULL && svd->tr_state == SEGVN_TR_OFF); in segvn_clrszc()
6390 amp = NULL; in segvn_clrszc()
6406 if (amp == NULL || svd->type == MAP_SHARED) { in segvn_clrszc()
6418 ANON_LOCK_ENTER(&amp->a_rwlock, RW_WRITER); in segvn_clrszc()
6421 if ((oldap = anon_get_ptr(amp->ahp, an_idx)) != NULL) { in segvn_clrszc()
6429 ASSERT(vp == NULL || anon_pages(amp->ahp, in segvn_clrszc()
6431 if ((err = anon_map_demotepages(amp, an_idx, in segvn_clrszc()
6450 (void) anon_set_ptr(amp->ahp, an_idx, ap, in segvn_clrszc()
6458 amp->a_szc = 0; in segvn_clrszc()
6461 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_clrszc()
6477 struct anon_map *amp = svd->amp; in segvn_claim_pages() local
6487 int anon = (amp != NULL) ? 1 : 0; in segvn_claim_pages()
6493 ASSERT(amp == NULL || IS_P2ALIGNED(anon_idx, pgcnt)); in segvn_claim_pages()
6503 if (anon_get_ptr(amp->ahp, anon_idx) == NULL) { in segvn_claim_pages()
6505 ASSERT(!anon_pages(amp->ahp, anon_idx, pgcnt)); in segvn_claim_pages()
6508 anon_pages(amp->ahp, anon_idx, pgcnt) == pgcnt); in segvn_claim_pages()
6515 ap = anon_get_ptr(amp->ahp, anon_idx); in segvn_claim_pages()
6642 if (svd->amp != NULL && svd->type == MAP_PRIVATE) { in segvn_split_seg()
6643 struct anon_map *oamp = svd->amp, *namp; in segvn_split_seg()
6661 nsvd->amp = namp; in segvn_split_seg()
6664 } else if (svd->amp != NULL) { in segvn_split_seg()
6666 ASSERT(svd->amp == nsvd->amp); in segvn_split_seg()
6667 ASSERT(seg->s_szc <= svd->amp->a_szc); in segvn_split_seg()
6670 ANON_LOCK_ENTER(&svd->amp->a_rwlock, RW_WRITER); in segvn_split_seg()
6671 svd->amp->refcnt++; in segvn_split_seg()
6672 ANON_LOCK_EXIT(&svd->amp->a_rwlock); in segvn_split_seg()
6687 ASSERT(svd->amp); in segvn_split_seg()
6689 svd->swresv = ptob(anon_pages(svd->amp->ahp, in segvn_split_seg()
6691 nsvd->swresv = ptob(anon_pages(nsvd->amp->ahp, in segvn_split_seg()
6974 struct anon_map *amp; in segvn_kluster() local
7012 if ((amp = svd->amp) == NULL) in segvn_kluster()
7017 ANON_LOCK_ENTER(&amp->a_rwlock, RW_READER); in segvn_kluster()
7019 oap = anon_get_ptr(amp->ahp, page); in segvn_kluster()
7020 ap = anon_get_ptr(amp->ahp, page + pd); in segvn_kluster()
7022 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_kluster()
7076 struct anon_map *amp; in segvn_swapout() local
7089 if ((amp = svd->amp) != NULL) in segvn_swapout()
7106 if (amp != NULL) { in segvn_swapout()
7107 ANON_LOCK_ENTER(&amp->a_rwlock, RW_READER); in segvn_swapout()
7108 if (anon_array_try_enter(amp, anon_index + page, in segvn_swapout()
7110 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_swapout()
7113 ap = anon_get_ptr(amp->ahp, anon_index + page); in segvn_swapout()
7121 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_swapout()
7257 struct anon_map *amp; in segvn_sync() local
7294 } else if (svd->type == MAP_SHARED && svd->amp != NULL && in segvn_sync()
7295 svd->amp->a_softlockcnt > 0) { in segvn_sync()
7302 if (svd->amp->a_softlockcnt > 0 || svd->softlockcnt > 0) { in segvn_sync()
7335 } else if (svd->vp && svd->amp == NULL && in segvn_sync()
7348 if ((amp = svd->amp) != NULL) in segvn_sync()
7353 if (amp != NULL) { in segvn_sync()
7354 ANON_LOCK_ENTER(&amp->a_rwlock, RW_READER); in segvn_sync()
7355 anon_array_enter(amp, anon_index, &cookie); in segvn_sync()
7356 ap = anon_get_ptr(amp->ahp, anon_index++); in segvn_sync()
7364 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_sync()
7417 } else if (svd->type == MAP_SHARED && amp != NULL) { in segvn_sync()
7478 struct anon_map *amp; /* XXX - for locknest */ in segvn_incore() local
7486 if (svd->amp == NULL && svd->vp == NULL) { in segvn_incore()
7496 amp = svd->amp; in segvn_incore()
7503 if (amp != NULL) { in segvn_incore()
7504 ANON_LOCK_ENTER(&amp->a_rwlock, RW_READER); in segvn_incore()
7505 anon_array_enter(amp, svd->anon_index + p, &cookie); in segvn_incore()
7506 ap = anon_get_ptr(amp->ahp, svd->anon_index + p); in segvn_incore()
7511 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_incore()
7643 struct anon_map *amp; in segvn_lockop() local
7667 if (svd->amp != NULL && svd->amp->a_sp != NULL) { in segvn_lockop()
7670 sp = svd->amp->a_sp; in segvn_lockop()
7699 ASSERT(svd->amp != NULL); in segvn_lockop()
7701 ASSERT(svd->amp == NULL && in segvn_lockop()
7730 if (op == MC_LOCK && svd->amp == NULL && svd->vp == NULL) { in segvn_lockop()
7732 svd->amp = anonmap_alloc(seg->s_size, 0, ANON_SLEEP); in segvn_lockop()
7733 svd->amp->a_szc = seg->s_szc; in segvn_lockop()
7736 if ((amp = svd->amp) != NULL) { in segvn_lockop()
7764 ANON_LOCK_ENTER(&amp->a_rwlock, RW_READER); in segvn_lockop()
7766 anon_array_enter(amp, i_idx, &i_cookie); in segvn_lockop()
7767 i_ap = anon_get_ptr(amp->ahp, i_idx); in segvn_lockop()
7783 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_lockop()
7809 if (amp != NULL) in segvn_lockop()
7810 ANON_LOCK_ENTER(&amp->a_rwlock, RW_READER); in segvn_lockop()
7818 amp != NULL && in segvn_lockop()
7819 ((ap = anon_get_ptr(amp->ahp, anon_index)) in segvn_lockop()
7821 anon_array_enter(amp, anon_index, &cookie); in segvn_lockop()
7823 if ((ap = anon_get_ptr(amp->ahp, in segvn_lockop()
7829 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_lockop()
7833 ASSERT(anon_get_ptr(amp->ahp, in segvn_lockop()
7835 (void) anon_set_ptr(amp->ahp, in segvn_lockop()
7847 if (amp != NULL) { in segvn_lockop()
7848 anon_array_enter(amp, anon_index, &cookie); in segvn_lockop()
7849 ap = anon_get_ptr(amp->ahp, anon_index); in segvn_lockop()
7856 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_lockop()
7864 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_lockop()
7895 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_lockop()
7974 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_lockop()
8069 struct anon_map *amp; in segvn_advise() local
8145 } else if (svd->type == MAP_SHARED && svd->amp != NULL && in segvn_advise()
8146 svd->amp->a_softlockcnt > 0) { in segvn_advise()
8156 amp = svd->amp; in segvn_advise()
8161 if (behav == MADV_FREE && (vp != NULL || amp == NULL)) { in segvn_advise()
8173 if (amp == NULL) { in segvn_advise()
8187 ANON_LOCK_ENTER(&amp->a_rwlock, RW_READER); in segvn_advise()
8188 err = anon_disclaim(amp, in segvn_advise()
8207 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_advise()
8234 already_set = lgrp_shm_policy_set(policy, amp, in segvn_advise()
8263 page_mark_migrate(seg, addr, len, amp, svd->anon_index, in segvn_advise()
8373 already_set = lgrp_shm_policy_set(policy, amp, in segvn_advise()
8402 page_mark_migrate(seg, addr, len, amp, svd->anon_index, in segvn_advise()
8414 ASSERT(svd->amp == NULL); in segvn_advise()
8701 struct anon_map *amp; in segvn_dump() local
8715 if ((amp = svd->amp) != NULL) { in segvn_dump()
8717 ANON_LOCK_ENTER(&amp->a_rwlock, RW_READER); in segvn_dump()
8724 if (amp && (ap = anon_get_ptr(svd->amp->ahp, anon_index++))) { in segvn_dump()
8752 if (amp != NULL) in segvn_dump()
8753 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_dump()
8816 struct anon_map *amp; in segvn_pagelock() local
8867 if ((amp = svd->amp) == NULL) { in segvn_pagelock()
9027 pamp = amp; in segvn_pagelock()
9295 ANON_LOCK_ENTER(&amp->a_rwlock, RW_READER); in segvn_pagelock()
9296 ASSERT(amp->a_szc >= seg->s_szc); in segvn_pagelock()
9297 anpgcnt = page_get_pagecnt(amp->a_szc); in segvn_pagelock()
9313 anon_array_enter(amp, anon_index, &cookie); in segvn_pagelock()
9316 ap = anon_get_ptr(amp->ahp, anon_index); in segvn_pagelock()
9349 anon_array_enter(amp, anon_index, &cookie); in segvn_pagelock()
9351 ap = anon_get_ptr(amp->ahp, anon_index); in segvn_pagelock()
9379 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_pagelock()
9433 if (svd->amp == NULL || svd->vp != NULL) { in segvn_purge()
9446 } else if (svd->softlockcnt == 0 && svd->amp->a_softlockcnt != 0) { in segvn_purge()
9447 seg_ppurge(seg, svd->amp, 0); in segvn_purge()
9469 ASSERT(svd->vp == NULL && svd->amp != NULL); in segvn_reclaim()
9538 amp_t *amp = (amp_t *)ptag; in shamp_reclaim() local
9544 ASSERT(amp->a_softlockcnt >= npages); in shamp_reclaim()
9569 mutex_enter(&amp->a_purgemtx); in shamp_reclaim()
9570 if (!atomic_add_long_nv((ulong_t *)&amp->a_softlockcnt, -npages) && in shamp_reclaim()
9571 amp->a_purgewait) { in shamp_reclaim()
9572 amp->a_purgewait = 0; in shamp_reclaim()
9573 cv_broadcast(&amp->a_purgecv); in shamp_reclaim()
9575 mutex_exit(&amp->a_purgemtx); in shamp_reclaim()
9591 struct anon_map *amp; in segvn_getmemid() local
9609 if ((amp = svd->amp) != NULL) { in segvn_getmemid()
9615 ASSERT(amp != NULL); in segvn_getmemid()
9617 ANON_LOCK_ENTER(&amp->a_rwlock, RW_READER); in segvn_getmemid()
9618 anon_array_enter(amp, anon_index, &cookie); in segvn_getmemid()
9619 ap = anon_get_ptr(amp->ahp, anon_index); in segvn_getmemid()
9626 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_getmemid()
9629 ASSERT(anon_get_ptr(amp->ahp, anon_index) in segvn_getmemid()
9631 (void) anon_set_ptr(amp->ahp, anon_index, in segvn_getmemid()
9637 ANON_LOCK_EXIT(&amp->a_rwlock); in segvn_getmemid()
9678 struct anon_map *amp; in segvn_getpolicy() local
9703 amp = svn_data->amp; in segvn_getpolicy()
9707 policy_info = lgrp_shm_policy_get(amp, anon_index, vp, vn_off); in segvn_getpolicy()
9747 struct anon_map *amp; in segvn_textrepl() local
9756 ASSERT(vp != NULL && svd->amp == NULL); in segvn_textrepl()
9951 if ((amp = svntrp->tr_amp[lgrp_id]) == NULL) { in segvn_textrepl()
9961 amp = anonmap_alloc(size, size, ANON_NOSLEEP); in segvn_textrepl()
9962 if (amp == NULL) { in segvn_textrepl()
9967 ASSERT(amp->refcnt == 1); in segvn_textrepl()
9968 amp->a_szc = szc; in segvn_textrepl()
9969 svntrp->tr_amp[lgrp_id] = amp; in segvn_textrepl()
9981 ASSERT(amp->a_szc == szc && amp->size == size && amp->swresv == size); in segvn_textrepl()
9982 ASSERT(amp->refcnt >= 1); in segvn_textrepl()
9983 svd->amp = amp; in segvn_textrepl()
10035 ASSERT(svd->amp != NULL); in segvn_textunrepl()
10036 ASSERT(svd->amp->refcnt >= 1); in segvn_textunrepl()
10053 if (svntrp->tr_amp[lgrp_id] != svd->amp) { in segvn_textunrepl()
10057 svd->amp = NULL; in segvn_textunrepl()
10080 struct anon_map *amp = svntrp->tr_amp[i]; in segvn_textunrepl() local
10081 if (amp == NULL) { in segvn_textunrepl()
10084 ASSERT(amp->refcnt == 1); in segvn_textunrepl()
10085 ASSERT(amp->swresv == size); in segvn_textunrepl()
10086 ASSERT(amp->size == size); in segvn_textunrepl()
10087 ASSERT(amp->a_szc == szc); in segvn_textunrepl()
10088 if (amp->a_szc != 0) { in segvn_textunrepl()
10089 anon_free_pages(amp->ahp, 0, size, szc); in segvn_textunrepl()
10091 anon_free(amp->ahp, 0, size); in segvn_textunrepl()
10096 anon_unresv_zone(amp->swresv, NULL); in segvn_textunrepl()
10097 amp->refcnt = 0; in segvn_textunrepl()
10098 anonmap_free(amp); in segvn_textunrepl()
10218 struct anon_map *amp; in segvn_trupdate_seg() local
10230 ASSERT(svd->amp != NULL); in segvn_trupdate_seg()
10234 ASSERT(svntrp->tr_amp[svd->tr_policy_info.mem_lgrpid] == svd->amp); in segvn_trupdate_seg()
10288 amp = anonmap_alloc(size, size, KM_NOSLEEP); in segvn_trupdate_seg()
10289 if (amp == NULL) { in segvn_trupdate_seg()
10297 ASSERT(amp->refcnt == 1); in segvn_trupdate_seg()
10298 amp->a_szc = seg->s_szc; in segvn_trupdate_seg()
10299 svntrp->tr_amp[lgrp_id] = amp; in segvn_trupdate_seg()
10314 ASSERT(svd->amp != NULL); in segvn_trupdate_seg()
10317 ASSERT(svd->amp != svntrp->tr_amp[lgrp_id]); in segvn_trupdate_seg()
10320 svd->amp = svntrp->tr_amp[lgrp_id]; in segvn_trupdate_seg()
10328 ASSERT(svd->amp != NULL && svd->amp == svntrp->tr_amp[lgrp_id]); in segvn_trupdate_seg()