Lines Matching refs:msqptr

395 	struct msqid_kernel *msqptr;
421 msqptr = &msqids[msqid];
423 if (msqptr->u.msg_qbytes == 0) {
430 if (msqptr->u.msg_perm._seq != IPCID_TO_SEQ(uap->msqid)) {
438 eval = mac_sysvmsq_check_msqctl(kauth_cred_get(), msqptr, cmd);
451 if ((eval = ipcperm(cred, &msqptr->u.msg_perm, IPC_M)))
463 for (msghdr = msqptr->u.msg_first; msghdr != NULL;
471 msghdr = msqptr->u.msg_first;
476 msqptr->u.msg_cbytes -= msghdr->msg_ts;
477 msqptr->u.msg_qnum--;
483 if (msqptr->u.msg_cbytes != 0)
485 if (msqptr->u.msg_qnum != 0)
488 msqptr->u.msg_qbytes = 0; /* Mark it as free */
490 mac_sysvmsq_label_recycle(msqptr);
493 wakeup((caddr_t)msqptr);
499 if ((eval = ipcperm(cred, &msqptr->u.msg_perm, IPC_M)))
521 if (msqbuf.msg_qbytes > msqptr->u.msg_qbytes) {
543 msqptr->u.msg_perm.uid = msqbuf.msg_perm.uid; /* change the owner */
544 msqptr->u.msg_perm.gid = msqbuf.msg_perm.gid; /* change the owner */
545 msqptr->u.msg_perm.mode = (msqptr->u.msg_perm.mode & ~0777) |
547 msqptr->u.msg_qbytes = msqbuf.msg_qbytes;
548 msqptr->u.msg_ctime = sysv_msgtime();
552 if ((eval = ipcperm(cred, &msqptr->u.msg_perm, IPC_R))) {
562 msqid_ds_kerneltouser64(&msqptr->u, &msqid_ds64);
566 msqid_ds_kerneltouser32(&msqptr->u, &msqid_ds32);
594 struct msqid_kernel *msqptr = NULL;
609 msqptr = &msqids[msqid];
610 if (msqptr->u.msg_qbytes != 0 &&
611 msqptr->u.msg_perm._key == key)
625 if ((eval = ipcperm(cred, &msqptr->u.msg_perm, msgflg & 0700 ))) {
633 eval = mac_sysvmsq_check_msqget(cred, msqptr);
652 msqptr = &msqids[msqid];
653 if (msqptr->u.msg_qbytes == 0 &&
654 (msqptr->u.msg_perm.mode & MSG_LOCKED) == 0)
667 msqptr->u.msg_perm._key = key;
668 msqptr->u.msg_perm.cuid = kauth_cred_getuid(cred);
669 msqptr->u.msg_perm.uid = kauth_cred_getuid(cred);
670 msqptr->u.msg_perm.cgid = kauth_cred_getgid(cred);
671 msqptr->u.msg_perm.gid = kauth_cred_getgid(cred);
672 msqptr->u.msg_perm.mode = (msgflg & 0777);
674 msqptr->u.msg_perm._seq++;
675 msqptr->u.msg_first = NULL;
676 msqptr->u.msg_last = NULL;
677 msqptr->u.msg_cbytes = 0;
678 msqptr->u.msg_qnum = 0;
679 msqptr->u.msg_qbytes = msginfo.msgmnb;
680 msqptr->u.msg_lspid = 0;
681 msqptr->u.msg_lrpid = 0;
682 msqptr->u.msg_stime = 0;
683 msqptr->u.msg_rtime = 0;
684 msqptr->u.msg_ctime = sysv_msgtime();
686 mac_sysvmsq_label_associate(cred, msqptr);
698 *retval = IXSEQ_TO_IPCID(msqid, msqptr->u.msg_perm);
722 struct msqid_kernel *msqptr;
752 msqptr = &msqids[msqid];
753 if (msqptr->u.msg_qbytes == 0) {
760 if (msqptr->u.msg_perm._seq != IPCID_TO_SEQ(uap->msqid)) {
768 if ((eval = ipcperm(kauth_cred_get(), &msqptr->u.msg_perm, IPC_W))) {
776 eval = mac_sysvmsq_check_msqsnd(kauth_cred_get(), msqptr);
800 if (msgsz > msqptr->u.msg_qbytes) {
802 printf("msgsz > msqptr->msg_qbytes\n");
812 if (msqptr->u.msg_perm.mode & MSG_LOCKED) {
816 blocking_resource = msqptr;
824 if (msgsz + msqptr->u.msg_cbytes > msqptr->u.msg_qbytes) {
828 blocking_resource = msqptr;
861 if ((msqptr->u.msg_perm.mode & MSG_LOCKED) != 0) {
872 msqptr->u.msg_perm.mode |= MSG_LOCKED;
884 msqptr->u.msg_perm.mode &= ~MSG_LOCKED;
897 if (msqptr->u.msg_qbytes == 0) {
919 if (msqptr->u.msg_perm.mode & MSG_LOCKED)
923 if (msgsz + msqptr->u.msg_cbytes > msqptr->u.msg_qbytes)
932 if ((msqptr->u.msg_perm.mode & MSG_LOCKED) != 0)
934 msqptr->u.msg_perm.mode |= MSG_LOCKED;
945 mac_sysvmsg_label_associate(kauth_cred_get(), msqptr, msghdr);
995 msqptr->u.msg_perm.mode &= ~MSG_LOCKED;
996 wakeup((caddr_t)msqptr);
1006 msqptr->u.msg_perm.mode &= ~MSG_LOCKED;
1007 wakeup((caddr_t)msqptr);
1040 msqptr->u.msg_perm.mode &= ~MSG_LOCKED;
1041 wakeup((caddr_t)msqptr);
1056 msqptr->u.msg_perm.mode &= ~MSG_LOCKED;
1062 if (msqptr->u.msg_qbytes == 0) {
1064 wakeup((caddr_t)msqptr);
1087 eval = mac_sysvmsq_check_enqueue(kauth_cred_get(), msghdr, msqptr);
1090 wakeup((caddr_t) msqptr);
1098 if (msqptr->u.msg_first == NULL) {
1099 msqptr->u.msg_first = msghdr;
1100 msqptr->u.msg_last = msghdr;
1102 msqptr->u.msg_last->msg_next = msghdr;
1103 msqptr->u.msg_last = msghdr;
1105 msqptr->u.msg_last->msg_next = NULL;
1107 msqptr->u.msg_cbytes += msghdr->msg_ts;
1108 msqptr->u.msg_qnum++;
1109 msqptr->u.msg_lspid = p->p_pid;
1110 msqptr->u.msg_stime = sysv_msgtime();
1112 wakeup((caddr_t)msqptr);
1138 struct msqid_kernel *msqptr;
1169 msqptr = &msqids[msqid];
1170 if (msqptr->u.msg_qbytes == 0) {
1177 if (msqptr->u.msg_perm._seq != IPCID_TO_SEQ(uap->msqid)) {
1185 if ((eval = ipcperm(kauth_cred_get(), &msqptr->u.msg_perm, IPC_R))) {
1193 eval = mac_sysvmsq_check_msqrcv(kauth_cred_get(), msqptr);
1200 msghdr = msqptr->u.msg_first;
1217 if (msqptr->u.msg_first == msqptr->u.msg_last) {
1218 msqptr->u.msg_first = NULL;
1219 msqptr->u.msg_last = NULL;
1221 msqptr->u.msg_first = msghdr->msg_next;
1222 if (msqptr->u.msg_first == NULL)
1231 prev = &(msqptr->u.msg_first);
1264 if (msghdr == msqptr->u.msg_last) {
1267 &msqptr->u.msg_first)
1269 msqptr->u.msg_first =
1271 msqptr->u.msg_last =
1275 &msqptr->u.msg_first)
1277 msqptr->u.msg_last =
1323 eval = msleep((caddr_t)msqptr, &sysv_msg_subsys_mutex, (PZERO - 4) | PCATCH, "msgwait",
1341 if (msqptr->u.msg_qbytes == 0 ||
1342 msqptr->u.msg_perm._seq != IPCID_TO_SEQ(uap->msqid)) {
1363 msqptr->u.msg_cbytes -= msghdr->msg_ts;
1364 msqptr->u.msg_qnum--;
1365 msqptr->u.msg_lrpid = p->p_pid;
1366 msqptr->u.msg_rtime = sysv_msgtime();
1408 wakeup((caddr_t)msqptr);
1441 wakeup((caddr_t)msqptr);
1453 wakeup((caddr_t)msqptr);