Lines Matching defs:ns

75 #define msg_ids(ns)	((ns)->ids[IPC_MSG_IDS])
77 static inline struct msg_queue *msq_obtain_object(struct ipc_namespace *ns, int id)
79 struct kern_ipc_perm *ipcp = ipc_obtain_object(&msg_ids(ns), id);
87 static inline struct msg_queue *msq_obtain_object_check(struct ipc_namespace *ns,
90 struct kern_ipc_perm *ipcp = ipc_obtain_object_check(&msg_ids(ns), id);
98 static inline void msg_rmid(struct ipc_namespace *ns, struct msg_queue *s)
100 ipc_rmid(&msg_ids(ns), &s->q_perm);
114 * @ns: namespace
119 static int newque(struct ipc_namespace *ns, struct ipc_params *params)
143 msq->q_qbytes = ns->msg_ctlmnb;
150 id = ipc_addid(&msg_ids(ns), &msq->q_perm, ns->msg_ctlmni);
212 static void freeque(struct ipc_namespace *ns, struct kern_ipc_perm *ipcp)
219 msg_rmid(ns, msq);
224 atomic_dec(&ns->msg_hdrs);
227 atomic_sub(msq->q_cbytes, &ns->msg_bytes);
243 struct ipc_namespace *ns;
250 ns = current->nsproxy->ipc_ns;
255 return ipcget(ns, &msg_ids(ns), &msg_ops, &msg_params);
339 static int msgctl_down(struct ipc_namespace *ns, int msqid, int cmd,
352 down_write(&msg_ids(ns).rwsem);
355 ipcp = ipcctl_pre_down_nolock(ns, &msg_ids(ns), msqid, cmd,
372 freeque(ns, ipcp);
375 if (msqid64.msg_qbytes > ns->msg_ctlmnb &&
408 up_write(&msg_ids(ns).rwsem);
412 static int msgctl_nolock(struct ipc_namespace *ns, int msqid,
438 msginfo.msgmni = ns->msg_ctlmni;
439 msginfo.msgmax = ns->msg_ctlmax;
440 msginfo.msgmnb = ns->msg_ctlmnb;
443 down_read(&msg_ids(ns).rwsem);
445 msginfo.msgpool = msg_ids(ns).in_use;
446 msginfo.msgmap = atomic_read(&ns->msg_hdrs);
447 msginfo.msgtql = atomic_read(&ns->msg_bytes);
453 max_id = ipc_get_maxid(&msg_ids(ns));
454 up_read(&msg_ids(ns).rwsem);
473 msq = msq_obtain_object(ns, msqid);
480 msq = msq_obtain_object_check(ns, msqid);
489 if (ipcperms(ns, &msq->q_perm, S_IRUGO))
525 struct ipc_namespace *ns;
531 ns = current->nsproxy->ipc_ns;
538 return msgctl_nolock(ns, msqid, cmd, version, buf);
541 return msgctl_down(ns, msqid, cmd, buf, version);
613 struct ipc_namespace *ns;
615 ns = current->nsproxy->ipc_ns;
617 if (msgsz > ns->msg_ctlmax || (long) msgsz < 0 || msqid < 0)
630 msq = msq_obtain_object_check(ns, msqid);
642 if (ipcperms(ns, &msq->q_perm, S_IWUGO))
704 atomic_add(msgsz, &ns->msg_bytes);
705 atomic_inc(&ns->msg_hdrs);
828 struct ipc_namespace *ns;
831 ns = current->nsproxy->ipc_ns;
839 copy = prepare_copy(buf, min_t(size_t, bufsz, ns->msg_ctlmax));
846 msq = msq_obtain_object_check(ns, msqid);
857 if (ipcperms(ns, &msq->q_perm, S_IRUGO))
892 atomic_sub(msg->m_ts, &ns->msg_bytes);
893 atomic_dec(&ns->msg_hdrs);
998 void recompute_msgmni(struct ipc_namespace *ns)
1011 ns->msg_ctlmni = MSGMNI;
1016 ns->msg_ctlmni = IPCMNI / nb_ns;
1020 ns->msg_ctlmni = allowed;
1023 void msg_init_ns(struct ipc_namespace *ns)
1025 ns->msg_ctlmax = MSGMAX;
1026 ns->msg_ctlmnb = MSGMNB;
1028 recompute_msgmni(ns);
1030 atomic_set(&ns->msg_bytes, 0);
1031 atomic_set(&ns->msg_hdrs, 0);
1032 ipc_init_ids(&ns->ids[IPC_MSG_IDS]);
1036 void msg_exit_ns(struct ipc_namespace *ns)
1038 free_ipcs(ns, &msg_ids(ns), freeque);
1039 idr_destroy(&ns->ids[IPC_MSG_IDS].ipcs_idr);