Lines Matching defs:shmseg
130 struct shmid_ds *shmseg;
137 shmseg = &shmsegs[index];
138 memcpy(perm, &shmseg->shm_perm, sizeof(*perm));
151 struct shmid_ds *shmseg;
158 shmseg = &shmsegs[segnum];
159 if ((shmseg->shm_perm.mode & SHMSEG_ALLOCATED) == 0)
161 if ((shmseg->shm_perm.mode &
164 if (shmseg->shm_perm._seq != IPCID_TO_SEQ(shmid))
167 return shmseg;
177 struct shmid_ds *shmseg;
183 shmseg = &shmsegs[segnum];
185 shmseg->shm_perm._key, shmseg->shm_perm._seq));
187 size = (shmseg->shm_segsz + PGOFSET) & ~PGOFSET;
188 wanted = (shmseg->shm_perm.mode & SHMSEG_WANTED);
190 shmseg->_shm_internal = NULL;
193 shmseg->shm_perm.mode = SHMSEG_FREE;
208 struct shmid_ds *shmseg;
214 shmseg = &shmsegs[segnum];
217 shmseg->shm_dtime = time_second;
218 if ((--shmseg->shm_nattch <= 0) &&
219 (shmseg->shm_perm.mode & SHMSEG_REMOVED)) {
220 uobj = shmseg->_shm_internal;
274 shm_memlock(struct shmid_ds *shmseg, int shmid, int cmd)
281 size = round_page(shmseg->shm_segsz);
283 if (cmd == SHM_LOCK && (shmseg->shm_perm.mode & SHMSEG_WIRED) == 0) {
285 error = uvm_obj_wirepages(shmseg->_shm_internal,
289 shmseg->shm_perm.mode |= SHMSEG_WIRED;
292 (shmseg->shm_perm.mode & SHMSEG_WIRED) != 0) {
294 uvm_obj_unwirepages(shmseg->_shm_internal, 0, size);
295 shmseg->shm_perm.mode &= ~SHMSEG_WIRED;
314 struct shmid_ds *shmseg;
354 shmseg = &shmsegs[IPCID_TO_IX(shmmap_se->shmid)];
355 size = (shmseg->shm_segsz + PGOFSET) & ~PGOFSET;
381 struct shmid_ds *shmseg;
399 shmseg = shm_find_segment_by_shmid(SCARG(uap, shmid));
400 if (shmseg == NULL) {
404 error = ipcperm(cred, &shmseg->shm_perm,
411 if (shmmap_s && shmmap_s->nitems >= shminfo.shmseg) {
416 size = (shmseg->shm_segsz + PGOFSET) & ~PGOFSET;
444 shmseg->shm_lpid = p->p_pid;
445 shmseg->shm_nattch++;
450 uobj = shmseg->_shm_internal;
459 shmseg->shm_atime = time_second;
517 struct shmid_ds *shmseg;
525 shmseg = shm_find_segment_by_shmid(shmid);
526 if (shmseg == NULL) {
533 if ((error = ipcperm(cred, &shmseg->shm_perm, IPC_R)) != 0)
536 shmbuf->shm_perm = shmseg->shm_perm;
538 shmbuf->shm_segsz = shmseg->shm_segsz;
539 shmbuf->shm_lpid = shmseg->shm_lpid;
540 shmbuf->shm_cpid = shmseg->shm_cpid;
541 shmbuf->shm_nattch = shmseg->shm_nattch;
542 shmbuf->shm_atime = shmseg->shm_atime;
543 shmbuf->shm_dtime = shmseg->shm_dtime;
544 shmbuf->shm_ctime = shmseg->shm_ctime;
547 if ((error = ipcperm(cred, &shmseg->shm_perm, IPC_M)) != 0)
549 shmseg->shm_perm.uid = shmbuf->shm_perm.uid;
550 shmseg->shm_perm.gid = shmbuf->shm_perm.gid;
551 shmseg->shm_perm.mode =
552 (shmseg->shm_perm.mode & ~ACCESSPERMS) |
554 shmseg->shm_ctime = time_second;
557 if ((error = ipcperm(cred, &shmseg->shm_perm, IPC_M)) != 0)
559 shmseg->shm_perm._key = IPC_PRIVATE;
560 shmseg->shm_perm.mode |= SHMSEG_REMOVED;
561 if (shmseg->shm_nattch <= 0) {
562 uobj = shmseg->_shm_internal;
573 error = shm_memlock(shmseg, shmid, cmd);
594 struct shmid_ds *shmseg;
610 shmseg = &shmsegs[segnum];
611 if (shmseg->shm_perm.mode & SHMSEG_REMOVED) {
617 shmseg->shm_perm.mode |= SHMSEG_WANTED;
633 error = ipcperm(cred, &shmseg->shm_perm, mode);
636 if (SCARG(uap, size) && SCARG(uap, size) > shmseg->shm_segsz)
639 *retval = IXSEQ_TO_IPCID(segnum, shmseg->shm_perm);
651 struct shmid_ds *shmseg;
718 shmseg = &shmsegs[segnum];
719 shmseg->shm_perm.mode = SHMSEG_ALLOCATED | SHMSEG_REMOVED;
727 shmseg->_shm_internal = uao_create(size, 0);
730 error = uvm_obj_wirepages(shmseg->_shm_internal, 0, size, NULL);
732 uao_detach(shmseg->_shm_internal);
745 shmseg->shm_perm._key = SCARG(uap, key);
746 shmseg->shm_perm._seq = (shmseg->shm_perm._seq + 1) & 0x7fff;
747 *retval = IXSEQ_TO_IPCID(segnum, shmseg->shm_perm);
749 shmseg->shm_perm.cuid = shmseg->shm_perm.uid = kauth_cred_geteuid(cred);
750 shmseg->shm_perm.cgid = shmseg->shm_perm.gid = kauth_cred_getegid(cred);
751 shmseg->shm_segsz = SCARG(uap, size);
752 shmseg->shm_cpid = l->l_proc->p_pid;
753 shmseg->shm_lpid = shmseg->shm_nattch = 0;
754 shmseg->shm_atime = shmseg->shm_dtime = 0;
755 shmseg->shm_ctime = time_second;
763 shmseg->shm_perm.mode = (shmseg->shm_perm.mode & SHMSEG_WANTED) |
766 if (shmseg->shm_perm.mode & SHMSEG_WANTED) {
767 shmseg->shm_perm.mode &= ~SHMSEG_WANTED;
830 struct shmid_ds *shmseg;
837 shmseg = &shmsegs[IPCID_TO_IX(shmmap_se->shmid)];
838 sz = (shmseg->shm_segsz + PGOFSET) & ~PGOFSET;
1114 CTLTYPE_INT, "shmseg",
1116 NULL, 0, &shminfo.shmseg, 0,