Lines Matching refs:shm_perm
138 memcpy(perm, &shmseg->shm_perm, sizeof(*perm));
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))
185 shmseg->shm_perm._key, shmseg->shm_perm._seq));
188 wanted = (shmseg->shm_perm.mode & SHMSEG_WANTED);
193 shmseg->shm_perm.mode = SHMSEG_FREE;
219 (shmseg->shm_perm.mode & SHMSEG_REMOVED)) {
283 if (cmd == SHM_LOCK && (shmseg->shm_perm.mode & SHMSEG_WIRED) == 0) {
289 shmseg->shm_perm.mode |= SHMSEG_WIRED;
292 (shmseg->shm_perm.mode & SHMSEG_WIRED) != 0) {
295 shmseg->shm_perm.mode &= ~SHMSEG_WIRED;
404 error = ipcperm(cred, &shmseg->shm_perm,
533 if ((error = ipcperm(cred, &shmseg->shm_perm, IPC_R)) != 0)
536 shmbuf->shm_perm = shmseg->shm_perm;
537 shmbuf->shm_perm.mode &= 0777;
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) |
553 (shmbuf->shm_perm.mode & ACCESSPERMS);
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;
602 if ((shmsegs[segnum].shm_perm.mode & SHMSEG_ALLOCATED) &&
603 shmsegs[segnum].shm_perm._key == SCARG(uap, key))
611 if (shmseg->shm_perm.mode & SHMSEG_REMOVED) {
617 shmseg->shm_perm.mode |= SHMSEG_WANTED;
633 error = ipcperm(cred, &shmseg->shm_perm, mode);
639 *retval = IXSEQ_TO_IPCID(segnum, shmseg->shm_perm);
704 if (shmsegs[segnum].shm_perm.mode & SHMSEG_FREE)
719 shmseg->shm_perm.mode = SHMSEG_ALLOCATED | SHMSEG_REMOVED;
743 * lock, while setting it (except shm_perm.mode).
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);
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;
888 if ((shmsegs[i].shm_perm.mode & SHMSEG_FREE) == 0)
911 newshmsegs[i].shm_perm.mode = SHMSEG_FREE;
912 newshmsegs[i].shm_perm._seq = 0;
971 shmsegs[i].shm_perm.mode = SHMSEG_FREE;
972 shmsegs[i].shm_perm._seq = 0;