• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6.36/ipc/

Lines Matching defs:msq

72 #define msg_unlock(msq)		ipc_unlock(&(msq)->q_perm)
182 struct msg_queue *msq;
187 msq = ipc_rcu_alloc(sizeof(*msq));
188 if (!msq)
191 msq->q_perm.mode = msgflg & S_IRWXUGO;
192 msq->q_perm.key = key;
194 msq->q_perm.security = NULL;
195 retval = security_msg_queue_alloc(msq);
197 ipc_rcu_putref(msq);
202 * ipc_addid() locks msq
204 id = ipc_addid(&msg_ids(ns), &msq->q_perm, ns->msg_ctlmni);
206 security_msg_queue_free(msq);
207 ipc_rcu_putref(msq);
211 msq->q_stime = msq->q_rtime = 0;
212 msq->q_ctime = get_seconds();
213 msq->q_cbytes = msq->q_qnum = 0;
214 msq->q_qbytes = ns->msg_ctlmnb;
215 msq->q_lspid = msq->q_lrpid = 0;
216 INIT_LIST_HEAD(&msq->q_messages);
217 INIT_LIST_HEAD(&msq->q_receivers);
218 INIT_LIST_HEAD(&msq->q_senders);
220 msg_unlock(msq);
222 return msq->q_perm.id;
225 static inline void ss_add(struct msg_queue *msq, struct msg_sender *mss)
229 list_add_tail(&mss->list, &msq->q_senders);
254 static void expunge_all(struct msg_queue *msq, int res)
258 tmp = msq->q_receivers.next;
259 while (tmp != &msq->q_receivers) {
282 struct msg_queue *msq = container_of(ipcp, struct msg_queue, q_perm);
284 expunge_all(msq, -EIDRM);
285 ss_wakeup(&msq->q_senders, 1);
286 msg_rmid(ns, msq);
287 msg_unlock(msq);
289 tmp = msq->q_messages.next;
290 while (tmp != &msq->q_messages) {
297 atomic_sub(msq->q_cbytes, &ns->msg_bytes);
298 security_msg_queue_free(msq);
299 ipc_rcu_putref(msq);
307 struct msg_queue *msq = container_of(ipcp, struct msg_queue, q_perm);
309 return security_msg_queue_associate(msq, msgflg);
416 struct msg_queue *msq;
429 msq = container_of(ipcp, struct msg_queue, q_perm);
431 err = security_msg_queue_msgctl(msq, cmd);
446 msq->q_qbytes = msqid64.msg_qbytes;
449 msq->q_ctime = get_seconds();
453 expunge_all(msq, -EAGAIN);
457 ss_wakeup(&msq->q_senders, 0);
463 msg_unlock(msq);
471 struct msg_queue *msq;
531 msq = msg_lock(ns, msqid);
532 if (IS_ERR(msq))
533 return PTR_ERR(msq);
534 success_return = msq->q_perm.id;
536 msq = msg_lock_check(ns, msqid);
537 if (IS_ERR(msq))
538 return PTR_ERR(msq);
542 if (ipcperms(&msq->q_perm, S_IRUGO))
545 err = security_msg_queue_msgctl(msq, cmd);
551 kernel_to_ipc64_perm(&msq->q_perm, &tbuf.msg_perm);
552 tbuf.msg_stime = msq->q_stime;
553 tbuf.msg_rtime = msq->q_rtime;
554 tbuf.msg_ctime = msq->q_ctime;
555 tbuf.msg_cbytes = msq->q_cbytes;
556 tbuf.msg_qnum = msq->q_qnum;
557 tbuf.msg_qbytes = msq->q_qbytes;
558 tbuf.msg_lspid = msq->q_lspid;
559 tbuf.msg_lrpid = msq->q_lrpid;
560 msg_unlock(msq);
574 msg_unlock(msq);
600 static inline int pipelined_send(struct msg_queue *msq, struct msg_msg *msg)
604 tmp = msq->q_receivers.next;
605 while (tmp != &msq->q_receivers) {
611 !security_msg_queue_msgrcv(msq, msg, msr->r_tsk,
622 msq->q_lrpid = task_pid_vnr(msr->r_tsk);
623 msq->q_rtime = get_seconds();
638 struct msg_queue *msq;
657 msq = msg_lock_check(ns, msqid);
658 if (IS_ERR(msq)) {
659 err = PTR_ERR(msq);
667 if (ipcperms(&msq->q_perm, S_IWUGO))
670 err = security_msg_queue_msgsnd(msq, msg, msgflg);
674 if (msgsz + msq->q_cbytes <= msq->q_qbytes &&
675 1 + msq->q_qnum <= msq->q_qbytes) {
684 ss_add(msq, &s);
685 ipc_rcu_getref(msq);
686 msg_unlock(msq);
689 ipc_lock_by_ptr(&msq->q_perm);
690 ipc_rcu_putref(msq);
691 if (msq->q_perm.deleted) {
703 msq->q_lspid = task_tgid_vnr(current);
704 msq->q_stime = get_seconds();
706 if (!pipelined_send(msq, msg)) {
708 list_add_tail(&msg->m_list, &msq->q_messages);
709 msq->q_cbytes += msgsz;
710 msq->q_qnum++;
719 msg_unlock(msq);
758 struct msg_queue *msq;
768 msq = msg_lock_check(ns, msqid);
769 if (IS_ERR(msq))
770 return PTR_ERR(msq);
777 if (ipcperms(&msq->q_perm, S_IRUGO))
781 tmp = msq->q_messages.next;
782 while (tmp != &msq->q_messages) {
787 !security_msg_queue_msgrcv(msq, walk_msg, current,
812 msq->q_qnum--;
813 msq->q_rtime = get_seconds();
814 msq->q_lrpid = task_tgid_vnr(current);
815 msq->q_cbytes -= msg->m_ts;
818 ss_wakeup(&msq->q_senders, 0);
819 msg_unlock(msq);
827 list_add_tail(&msr_d.r_list, &msq->q_receivers);
837 msg_unlock(msq);
845 * existance of msq:
876 ipc_lock_by_ptr(&msq->q_perm);
890 msg_unlock(msq);
925 struct msg_queue *msq = it;
929 msq->q_perm.key,
930 msq->q_perm.id,
931 msq->q_perm.mode,
932 msq->q_cbytes,
933 msq->q_qnum,
934 msq->q_lspid,
935 msq->q_lrpid,
936 msq->q_perm.uid,
937 msq->q_perm.gid,
938 msq->q_perm.cuid,
939 msq->q_perm.cgid,
940 msq->q_stime,
941 msq->q_rtime,
942 msq->q_ctime);