Lines Matching full:amp
127 static int shmem_lock(kshmid_t *sp, struct anon_map *amp);
128 static void shmem_unlock(kshmid_t *sp, struct anon_map *amp);
543 crargs.amp = sp->shm_amp; in shmat()
892 * unreserving the above anon, and freeing the below amp. in shmget()
1124 lock_again(size_t npages, kshmid_t *sp, struct anon_map *amp) in lock_again() argument
1134 ANON_LOCK_ENTER(&->a_rwlock, RW_READER); in lock_again()
1137 anon_array_enter(amp, anon_idx, &cookie); in lock_again()
1138 ap = anon_get_ptr(amp->ahp, anon_idx); in lock_again()
1153 ANON_LOCK_EXIT(&->a_rwlock); in lock_again()
1162 shmem_lock(kshmid_t *sp, struct anon_map *amp) in shmem_lock() argument
1164 size_t npages = btopr(amp->size); in shmem_lock()
1170 * A later ISM/DISM attach may increase the size of the amp, so in shmem_lock()
1180 crargs.amp = amp; in shmem_lock()
1184 error = as_map(as, 0x0, amp->size, segvn_create, &crargs); in shmem_lock()
1186 if ((error = as_ctl(as, 0x0, amp->size, MC_LOCK, 0, 0, in shmem_lock()
1188 lock_again(npages, sp, amp); in shmem_lock()
1190 (void) as_unmap(as, 0x0, amp->size); in shmem_lock()
1201 shmem_unlock(kshmid_t *sp, struct anon_map *amp) in shmem_unlock() argument
1215 ANON_LOCK_ENTER(&->a_rwlock, RW_READER); in shmem_unlock()
1218 anon_array_enter(amp, anon_idx, &cookie); in shmem_unlock()
1219 if ((ap = anon_get_ptr(amp->ahp, anon_idx)) == NULL) { in shmem_unlock()
1246 ANON_LOCK_EXIT(&->a_rwlock); in shmem_unlock()
1252 * amp. This means all shmdt()s and the IPC_RMID have been done.
1257 struct anon_map *amp = sp->shm_amp; in shm_rm_amp() local
1265 lgrp_shm_policy_fini(amp, NULL); in shm_rm_amp()
1266 ANON_LOCK_ENTER(&->a_rwlock, RW_WRITER); in shm_rm_amp()
1267 if (amp->a_szc != 0) { in shm_rm_amp()
1268 anon_shmap_free_pages(amp, 0, amp->size); in shm_rm_amp()
1270 anon_free(amp->ahp, 0, amp->size); in shm_rm_amp()
1272 ANON_LOCK_EXIT(&->a_rwlock); in shm_rm_amp()
1273 anon_unresv_zone(amp->swresv, zone); in shm_rm_amp()
1274 anonmap_free(amp); in shm_rm_amp()