MCPcopy Create free account
hub / github.com/F-Stack/f-stack / shm_delete_mapping

Function shm_delete_mapping

freebsd/kern/sysv_shm.c:270–295  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

268}
269
270static int
271shm_delete_mapping(struct vmspace *vm, struct shmmap_state *shmmap_s)
272{
273 struct shmid_kernel *shmseg;
274 int segnum, result;
275 vm_size_t size;
276
277 SYSVSHM_ASSERT_LOCKED();
278 segnum = IPCID_TO_IX(shmmap_s->shmid);
279 KASSERT(segnum >= 0 && segnum < shmalloced,
280 ("segnum %d shmalloced %d", segnum, shmalloced));
281
282 shmseg = &shmsegs[segnum];
283 size = round_page(shmseg->u.shm_segsz);
284 result = vm_map_remove(&vm->vm_map, shmmap_s->va, shmmap_s->va + size);
285 if (result != KERN_SUCCESS)
286 return (EINVAL);
287 shmmap_s->shmid = -1;
288 shmseg->u.shm_dtime = time_second;
289 if (--shmseg->u.shm_nattch == 0 &&
290 (shmseg->u.shm_perm.mode & SHMSEG_REMOVED)) {
291 shm_deallocate_segment(shmseg);
292 shm_last_free = segnum;
293 }
294 return (0);
295}
296
297static void
298shm_remove(struct shmid_kernel *shmseg, int segnum)

Callers 2

kern_shmdt_lockedFunction · 0.85
shmexit_myhookFunction · 0.85

Calls 2

vm_map_removeFunction · 0.85
shm_deallocate_segmentFunction · 0.85

Tested by

no test coverage detected