Lines Matching refs:amp
186 sptcreate(size_t size, struct seg **sptseg, struct anon_map *amp, in sptcreate() argument
208 sptcargs.amp = amp; in sptcreate()
225 sptdestroy(struct as *as, struct anon_map *amp) in sptdestroy() argument
231 (void) as_unmap(as, SEGSPTADDR, amp->size); in sptdestroy()
299 struct anon_map *amp = shmd->shm_amp; in segspt_shmincore() local
315 ANON_LOCK_ENTER(&->a_rwlock, RW_READER); in segspt_shmincore()
318 anon_array_enter(amp, anon_index, &cookie); in segspt_shmincore()
319 ap = anon_get_ptr(amp->ahp, anon_index); in segspt_shmincore()
336 ANON_LOCK_EXIT(&->a_rwlock); in segspt_shmincore()
376 struct anon_map *amp = sptcargs->amp; in segspt_create() local
377 struct kshmid *sp = amp->a_sp; in segspt_create()
380 pgcnt_t npages = btopr(amp->size); in segspt_create()
426 sptd->spt_amp = amp; in segspt_create()
436 ANON_LOCK_ENTER(&->a_rwlock, RW_WRITER); in segspt_create()
437 if (seg->s_szc > amp->a_szc) { in segspt_create()
438 amp->a_szc = seg->s_szc; in segspt_create()
440 ANON_LOCK_EXIT(&->a_rwlock); in segspt_create()
446 (void) lgrp_shm_policy_set(LGRP_MEM_POLICY_DEFAULT, amp, anon_index, in segspt_create()
456 if (!IS_P2ALIGNED(amp->size, share_sz)) { in segspt_create()
465 new_npgs = btop(P2ROUNDUP(amp->size, share_sz)); in segspt_create()
480 ANON_LOCK_ENTER(&->a_rwlock, RW_WRITER); in segspt_create()
481 (void) anon_copy_ptr(amp->ahp, 0, nahp, 0, npages, in segspt_create()
483 anon_release(amp->ahp, npages); in segspt_create()
484 amp->ahp = nahp; in segspt_create()
485 ASSERT(amp->swresv == ptob(npages)); in segspt_create()
486 amp->swresv = amp->size = ptob(new_npgs); in segspt_create()
487 ANON_LOCK_EXIT(&->a_rwlock); in segspt_create()
502 if ((err = anon_map_createpages(amp, anon_index, ptob(npages), ppa, in segspt_create()
621 struct anon_map *amp; in segspt_free_pages() local
647 amp = sptd->spt_amp; in segspt_free_pages()
649 npages = btop(amp->size); in segspt_free_pages()
651 ASSERT(amp != NULL); in segspt_free_pages()
654 sp = amp->a_sp; in segspt_free_pages()
660 if ((ap = anon_get_ptr(amp->ahp, anon_idx)) == NULL) { in segspt_free_pages()
665 if ((ap = anon_get_next_ptr(amp->ahp, &anon_idx)) in segspt_free_pages()
669 ASSERT(ANON_ISBUSY(anon_get_slot(amp->ahp, anon_idx)) == 0); in segspt_free_pages()
781 struct anon_map *amp; in segspt_getpolicy() local
799 amp = spt_data->spt_amp; in segspt_getpolicy()
800 ASSERT(amp->refcnt != 0); in segspt_getpolicy()
808 policy_info = lgrp_shm_policy_get(amp, anon_index, NULL, 0); in segspt_getpolicy()
832 struct anon_map *amp; in segspt_dismpagelock() local
979 amp = sptd->spt_amp; in segspt_dismpagelock()
994 ANON_LOCK_ENTER(&->a_rwlock, RW_WRITER); in segspt_dismpagelock()
996 ap = anon_get_ptr(amp->ahp, an_idx); in segspt_dismpagelock()
1045 ANON_LOCK_EXIT(&->a_rwlock); in segspt_dismpagelock()
1189 struct anon_map *amp; in segspt_shmpagelock() local
1312 amp = sptd->spt_amp; in segspt_shmpagelock()
1313 ASSERT(amp != NULL); in segspt_shmpagelock()
1323 ANON_LOCK_ENTER(&->a_rwlock, RW_WRITER); in segspt_shmpagelock()
1326 ap = anon_get_ptr(amp->ahp, anon_index); in segspt_shmpagelock()
1333 ANON_LOCK_EXIT(&->a_rwlock); in segspt_shmpagelock()
1585 struct anon_map *amp; /* XXX - for locknest */ in segspt_softunlock() local
1617 amp = sptd->spt_amp; in segspt_softunlock()
1618 ASSERT(amp != NULL); in segspt_softunlock()
1622 ap = anon_get_ptr(amp->ahp, anon_index++); in segspt_softunlock()
1632 ASSERT(ap == anon_get_ptr(amp->ahp, anon_index - 1)); in segspt_softunlock()
2019 struct anon_map *amp; /* XXX - for locknest */ in segspt_shmfault() local
2141 amp = sptd->spt_amp; in segspt_shmfault()
2142 ASSERT(amp != NULL); in segspt_shmfault()
2145 ANON_LOCK_ENTER(&->a_rwlock, RW_READER); in segspt_shmfault()
2147 ap = anon_get_ptr(amp->ahp, anon_index++); in segspt_shmfault()
2154 ANON_LOCK_EXIT(&->a_rwlock); in segspt_shmfault()
2261 struct anon_map *amp = shmd->shm_amp; in segspt_shmdup() local
2272 shmd_new->shm_amp = amp; in segspt_shmdup()
2278 ANON_LOCK_ENTER(&->a_rwlock, RW_WRITER); in segspt_shmdup()
2279 amp->refcnt++; in segspt_shmdup()
2280 ANON_LOCK_EXIT(&->a_rwlock); in segspt_shmdup()
2283 shmd_new->shm_vpage = kmem_zalloc(btopr(amp->size), KM_SLEEP); in segspt_shmdup()
2290 btopr(amp->size)); in segspt_shmdup()
2329 struct anon_map *amp = sptd->spt_amp; in spt_anon_getpages() local
2355 ANON_LOCK_ENTER(&->a_rwlock, RW_READER); in spt_anon_getpages()
2357 amp_pgs = page_get_pagecnt(amp->a_szc); in spt_anon_getpages()
2373 anon_array_enter(amp, an_idx, &cookie); in spt_anon_getpages()
2377 ierr = anon_map_getpages(amp, an_idx, szc, sptseg, in spt_anon_getpages()
2441 ANON_LOCK_EXIT(&->a_rwlock); in spt_anon_getpages()
2448 ANON_LOCK_EXIT(&->a_rwlock); in spt_anon_getpages()
2572 struct anon_map *amp = sptd->spt_amp; in spt_unlockpages() local
2583 ANON_LOCK_ENTER(&->a_rwlock, RW_READER); in spt_unlockpages()
2586 anon_array_enter(amp, anon_index, &cookie); in spt_unlockpages()
2587 ap = anon_get_ptr(amp->ahp, anon_index); in spt_unlockpages()
2633 ANON_LOCK_EXIT(&->a_rwlock); in spt_unlockpages()
2854 struct anon_map *amp; in segspt_shmadvise() local
2867 amp = sptd->spt_amp; in segspt_shmadvise()
2873 ANON_LOCK_ENTER(&->a_rwlock, RW_READER); in segspt_shmadvise()
2874 (void) anon_disclaim(amp, pg_idx, len, behav, NULL); in segspt_shmadvise()
2875 ANON_LOCK_EXIT(&->a_rwlock); in segspt_shmadvise()
2931 ANON_LOCK_ENTER(&->a_rwlock, RW_READER); in segspt_shmadvise()
2932 (void) anon_disclaim(amp, pg_idx, len, behav, NULL); in segspt_shmadvise()
2933 ANON_LOCK_EXIT(&->a_rwlock); in segspt_shmadvise()
2953 amp = shmd->shm_amp; in segspt_shmadvise()
2971 already_set = lgrp_shm_policy_set(policy, amp, anon_index, in segspt_shmadvise()
2990 page_mark_migrate(seg, shm_addr, size, amp, 0, NULL, 0, 0); in segspt_shmadvise()
3019 struct anon_map *amp = shmd->shm_amp; in segspt_shmgetmemid() local
3030 ANON_LOCK_ENTER(&->a_rwlock, RW_READER); in segspt_shmgetmemid()
3031 anon_array_enter(amp, anon_index, &cookie); in segspt_shmgetmemid()
3032 ap = anon_get_ptr(amp->ahp, anon_index); in segspt_shmgetmemid()
3040 ANON_LOCK_EXIT(&->a_rwlock); in segspt_shmgetmemid()
3043 (void) anon_set_ptr(amp->ahp, anon_index, ap, ANON_SLEEP); in segspt_shmgetmemid()
3047 ANON_LOCK_EXIT(&->a_rwlock); in segspt_shmgetmemid()
3059 struct anon_map *amp; in segspt_shmgetpolicy() local
3077 amp = shm_data->shm_amp; in segspt_shmgetpolicy()
3078 ASSERT(amp->refcnt != 0); in segspt_shmgetpolicy()
3086 policy_info = lgrp_shm_policy_get(amp, anon_index, NULL, 0); in segspt_shmgetpolicy()