Lines Matching full:amp
339 sptcreate(size_t size, struct seg **sptseg, struct anon_map *amp, in sptcreate() argument
357 sptcargs.amp = amp; in sptcreate()
374 sptdestroy(struct as *as, struct anon_map *amp) in sptdestroy() argument
377 (void) as_unmap(as, SEGSPTADDR, amp->size); in sptdestroy()
446 struct anon_map *amp = shmd->shm_amp; in segspt_shmincore() local
462 ANON_LOCK_ENTER(&->a_rwlock, RW_READER); in segspt_shmincore()
465 anon_array_enter(amp, anon_index, &cookie); in segspt_shmincore()
466 ap = anon_get_ptr(amp->ahp, anon_index); in segspt_shmincore()
483 ANON_LOCK_EXIT(&->a_rwlock); in segspt_shmincore()
524 struct anon_map *amp = sptcargs->amp; in segspt_create() local
525 struct kshmid *sp = amp->a_sp; in segspt_create()
528 pgcnt_t npages = btopr(amp->size); in segspt_create()
571 sptd->spt_amp = amp; in segspt_create()
581 ANON_LOCK_ENTER(&->a_rwlock, RW_WRITER); in segspt_create()
582 if (seg->s_szc > amp->a_szc) { in segspt_create()
583 amp->a_szc = seg->s_szc; in segspt_create()
585 ANON_LOCK_EXIT(&->a_rwlock); in segspt_create()
591 (void) lgrp_shm_policy_set(LGRP_MEM_POLICY_DEFAULT, amp, anon_index, in segspt_create()
601 if (!IS_P2ALIGNED(amp->size, share_sz)) { in segspt_create()
610 new_npgs = btop(P2ROUNDUP(amp->size, share_sz)); in segspt_create()
625 ANON_LOCK_ENTER(&->a_rwlock, RW_WRITER); in segspt_create()
626 (void) anon_copy_ptr(amp->ahp, 0, nahp, 0, npages, in segspt_create()
628 anon_release(amp->ahp, npages); in segspt_create()
629 amp->ahp = nahp; in segspt_create()
630 ASSERT(amp->swresv == ptob(npages)); in segspt_create()
631 amp->swresv = amp->size = ptob(new_npgs); in segspt_create()
632 ANON_LOCK_EXIT(&->a_rwlock); in segspt_create()
645 * get array of pages for each anon slot in amp in segspt_create()
647 if ((err = anon_map_createpages(amp, anon_index, ptob(npages), ppa, in segspt_create()
766 struct anon_map *amp; in segspt_free_pages() local
792 amp = sptd->spt_amp; in segspt_free_pages()
794 npages = btop(amp->size); in segspt_free_pages()
796 ASSERT(amp != NULL); in segspt_free_pages()
802 sp = amp->a_sp; in segspt_free_pages()
808 if ((ap = anon_get_ptr(amp->ahp, anon_idx)) == NULL) { in segspt_free_pages()
813 if ((ap = anon_get_next_ptr(amp->ahp, &anon_idx)) in segspt_free_pages()
817 ASSERT(ANON_ISBUSY(anon_get_slot(amp->ahp, anon_idx)) == 0); in segspt_free_pages()
929 struct anon_map *amp; in segspt_getpolicy() local
947 amp = spt_data->spt_amp; in segspt_getpolicy()
948 ASSERT(amp->refcnt != 0); in segspt_getpolicy()
956 policy_info = lgrp_shm_policy_get(amp, anon_index, NULL, 0); in segspt_getpolicy()
980 struct anon_map *amp; in segspt_dismpagelock() local
1006 * by amp in segspt_dismpagelock()
1127 amp = sptd->spt_amp; in segspt_dismpagelock()
1142 ANON_LOCK_ENTER(&->a_rwlock, RW_WRITER); in segspt_dismpagelock()
1144 ap = anon_get_ptr(amp->ahp, an_idx); in segspt_dismpagelock()
1193 ANON_LOCK_EXIT(&->a_rwlock); in segspt_dismpagelock()
1337 struct anon_map *amp; in segspt_shmpagelock() local
1366 * by amp in segspt_shmpagelock()
1460 amp = sptd->spt_amp; in segspt_shmpagelock()
1461 ASSERT(amp != NULL); in segspt_shmpagelock()
1471 ANON_LOCK_ENTER(&->a_rwlock, RW_WRITER); in segspt_shmpagelock()
1474 ap = anon_get_ptr(amp->ahp, anon_index); in segspt_shmpagelock()
1481 ANON_LOCK_EXIT(&->a_rwlock); in segspt_shmpagelock()
1733 struct anon_map *amp; /* XXX - for locknest */ in segspt_softunlock() local
1765 amp = sptd->spt_amp; in segspt_softunlock()
1766 ASSERT(amp != NULL); in segspt_softunlock()
1770 ap = anon_get_ptr(amp->ahp, anon_index++); in segspt_softunlock()
1780 ASSERT(ap == anon_get_ptr(amp->ahp, anon_index - 1)); in segspt_softunlock()
2168 struct anon_map *amp; /* XXX - for locknest */ in segspt_shmfault() local
2290 amp = sptd->spt_amp; in segspt_shmfault()
2291 ASSERT(amp != NULL); in segspt_shmfault()
2294 ANON_LOCK_ENTER(&->a_rwlock, RW_READER); in segspt_shmfault()
2296 ap = anon_get_ptr(amp->ahp, anon_index++); in segspt_shmfault()
2303 ANON_LOCK_EXIT(&->a_rwlock); in segspt_shmfault()
2410 struct anon_map *amp = shmd->shm_amp; in segspt_shmdup() local
2421 shmd_new->shm_amp = amp; in segspt_shmdup()
2427 ANON_LOCK_ENTER(&->a_rwlock, RW_WRITER); in segspt_shmdup()
2428 amp->refcnt++; in segspt_shmdup()
2429 ANON_LOCK_EXIT(&->a_rwlock); in segspt_shmdup()
2432 shmd_new->shm_vpage = kmem_zalloc(btopr(amp->size), KM_SLEEP); in segspt_shmdup()
2439 btopr(amp->size)); in segspt_shmdup()
2478 struct anon_map *amp = sptd->spt_amp; in spt_anon_getpages() local
2504 ANON_LOCK_ENTER(&->a_rwlock, RW_READER); in spt_anon_getpages()
2506 amp_pgs = page_get_pagecnt(amp->a_szc); in spt_anon_getpages()
2522 anon_array_enter(amp, an_idx, &cookie); in spt_anon_getpages()
2526 ierr = anon_map_getpages(amp, an_idx, szc, sptseg, in spt_anon_getpages()
2590 ANON_LOCK_EXIT(&->a_rwlock); in spt_anon_getpages()
2597 ANON_LOCK_EXIT(&->a_rwlock); in spt_anon_getpages()
2721 struct anon_map *amp = sptd->spt_amp; in spt_unlockpages() local
2732 ANON_LOCK_ENTER(&->a_rwlock, RW_READER); in spt_unlockpages()
2735 anon_array_enter(amp, anon_index, &cookie); in spt_unlockpages()
2736 ap = anon_get_ptr(amp->ahp, anon_index); in spt_unlockpages()
2782 ANON_LOCK_EXIT(&->a_rwlock); in spt_unlockpages()
3003 struct anon_map *amp; in segspt_shmadvise() local
3016 amp = sptd->spt_amp; in segspt_shmadvise()
3022 ANON_LOCK_ENTER(&->a_rwlock, RW_READER); in segspt_shmadvise()
3023 (void) anon_disclaim(amp, pg_idx, len, behav, NULL); in segspt_shmadvise()
3024 ANON_LOCK_EXIT(&->a_rwlock); in segspt_shmadvise()
3080 ANON_LOCK_ENTER(&->a_rwlock, RW_READER); in segspt_shmadvise()
3081 (void) anon_disclaim(amp, pg_idx, len, behav, NULL); in segspt_shmadvise()
3082 ANON_LOCK_EXIT(&->a_rwlock); in segspt_shmadvise()
3102 amp = shmd->shm_amp; in segspt_shmadvise()
3120 already_set = lgrp_shm_policy_set(policy, amp, anon_index, in segspt_shmadvise()
3139 page_mark_migrate(seg, shm_addr, size, amp, 0, NULL, 0, 0); in segspt_shmadvise()
3168 struct anon_map *amp = shmd->shm_amp; in segspt_shmgetmemid() local
3179 ANON_LOCK_ENTER(&->a_rwlock, RW_READER); in segspt_shmgetmemid()
3180 anon_array_enter(amp, anon_index, &cookie); in segspt_shmgetmemid()
3181 ap = anon_get_ptr(amp->ahp, anon_index); in segspt_shmgetmemid()
3189 ANON_LOCK_EXIT(&->a_rwlock); in segspt_shmgetmemid()
3192 (void) anon_set_ptr(amp->ahp, anon_index, ap, ANON_SLEEP); in segspt_shmgetmemid()
3196 ANON_LOCK_EXIT(&->a_rwlock); in segspt_shmgetmemid()
3208 struct anon_map *amp; in segspt_shmgetpolicy() local
3226 amp = shm_data->shm_amp; in segspt_shmgetpolicy()
3227 ASSERT(amp->refcnt != 0); in segspt_shmgetpolicy()
3235 policy_info = lgrp_shm_policy_get(amp, anon_index, NULL, 0); in segspt_shmgetpolicy()