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