Lines Matching +full:5 +full:ns

97 #define SEARCH_NUMBER		5
99 #define msg_ids(ns) ((ns)->ids[IPC_MSG_IDS]) argument
101 static inline struct msg_queue *msq_obtain_object(struct ipc_namespace *ns, int id) in msq_obtain_object() argument
103 struct kern_ipc_perm *ipcp = ipc_obtain_object_idr(&msg_ids(ns), id); in msq_obtain_object()
111 static inline struct msg_queue *msq_obtain_object_check(struct ipc_namespace *ns, in msq_obtain_object_check() argument
114 struct kern_ipc_perm *ipcp = ipc_obtain_object_check(&msg_ids(ns), id); in msq_obtain_object_check()
122 static inline void msg_rmid(struct ipc_namespace *ns, struct msg_queue *s) in msg_rmid() argument
124 ipc_rmid(&msg_ids(ns), &s->q_perm); in msg_rmid()
138 * @ns: namespace
143 static int newque(struct ipc_namespace *ns, struct ipc_params *params) in newque() argument
167 msq->q_qbytes = ns->msg_ctlmnb; in newque()
174 retval = ipc_addid(&msg_ids(ns), &msq->q_perm, ns->msg_ctlmni); in newque()
272 static void freeque(struct ipc_namespace *ns, struct kern_ipc_perm *ipcp) in freeque() argument
282 msg_rmid(ns, msq); in freeque()
288 atomic_dec(&ns->msg_hdrs); in freeque()
291 atomic_sub(msq->q_cbytes, &ns->msg_bytes); in freeque()
299 struct ipc_namespace *ns; in ksys_msgget() local
306 ns = current->nsproxy->ipc_ns; in ksys_msgget()
311 return ipcget(ns, &msg_ids(ns), &msg_ops, &msg_params); in ksys_msgget()
400 static int msgctl_down(struct ipc_namespace *ns, int msqid, int cmd, in msgctl_down() argument
407 down_write(&msg_ids(ns).rwsem); in msgctl_down()
410 ipcp = ipcctl_obtain_check(ns, &msg_ids(ns), msqid, cmd, in msgctl_down()
427 freeque(ns, ipcp); in msgctl_down()
433 if (msg_qbytes > ns->msg_ctlmnb && in msgctl_down()
472 up_write(&msg_ids(ns).rwsem); in msgctl_down()
476 static int msgctl_info(struct ipc_namespace *ns, int msqid, in msgctl_info() argument
492 msginfo->msgmni = ns->msg_ctlmni; in msgctl_info()
493 msginfo->msgmax = ns->msg_ctlmax; in msgctl_info()
494 msginfo->msgmnb = ns->msg_ctlmnb; in msgctl_info()
497 down_read(&msg_ids(ns).rwsem); in msgctl_info()
499 msginfo->msgpool = msg_ids(ns).in_use; in msgctl_info()
500 msginfo->msgmap = atomic_read(&ns->msg_hdrs); in msgctl_info()
501 msginfo->msgtql = atomic_read(&ns->msg_bytes); in msgctl_info()
507 max_idx = ipc_get_maxidx(&msg_ids(ns)); in msgctl_info()
508 up_read(&msg_ids(ns).rwsem); in msgctl_info()
512 static int msgctl_stat(struct ipc_namespace *ns, int msqid, in msgctl_stat() argument
522 msq = msq_obtain_object(ns, msqid); in msgctl_stat()
528 msq = msq_obtain_object_check(ns, msqid); in msgctl_stat()
540 if (ipcperms(ns, &msq->q_perm, S_IRUGO)) in msgctl_stat()
593 struct ipc_namespace *ns; in ksys_msgctl() local
600 ns = current->nsproxy->ipc_ns; in ksys_msgctl()
606 err = msgctl_info(ns, msqid, cmd, &msginfo); in ksys_msgctl()
616 err = msgctl_stat(ns, msqid, cmd, &msqid64); in ksys_msgctl()
625 return msgctl_down(ns, msqid, cmd, &msqid64.msg_perm, in ksys_msgctl()
628 return msgctl_down(ns, msqid, cmd, NULL, 0); in ksys_msgctl()
728 struct ipc_namespace *ns; in compat_ksys_msgctl() local
732 ns = current->nsproxy->ipc_ns; in compat_ksys_msgctl()
741 err = msgctl_info(ns, msqid, cmd, &msginfo); in compat_ksys_msgctl()
751 err = msgctl_stat(ns, msqid, cmd, &msqid64); in compat_ksys_msgctl()
760 return msgctl_down(ns, msqid, cmd, &msqid64.msg_perm, msqid64.msg_qbytes); in compat_ksys_msgctl()
762 return msgctl_down(ns, msqid, cmd, NULL, 0); in compat_ksys_msgctl()
848 struct ipc_namespace *ns; in do_msgsnd() local
851 ns = current->nsproxy->ipc_ns; in do_msgsnd()
853 if (msgsz > ns->msg_ctlmax || (long) msgsz < 0 || msqid < 0) in do_msgsnd()
866 msq = msq_obtain_object_check(ns, msqid); in do_msgsnd()
878 if (ipcperms(ns, &msq->q_perm, S_IWUGO)) in do_msgsnd()
938 atomic_add(msgsz, &ns->msg_bytes); in do_msgsnd()
939 atomic_inc(&ns->msg_hdrs); in do_msgsnd()
1097 struct ipc_namespace *ns; in do_msgrcv() local
1101 ns = current->nsproxy->ipc_ns; in do_msgrcv()
1109 copy = prepare_copy(buf, min_t(size_t, bufsz, ns->msg_ctlmax)); in do_msgrcv()
1116 msq = msq_obtain_object_check(ns, msqid); in do_msgrcv()
1127 if (ipcperms(ns, &msq->q_perm, S_IRUGO)) in do_msgrcv()
1162 atomic_sub(msg->m_ts, &ns->msg_bytes); in do_msgrcv()
1163 atomic_dec(&ns->msg_hdrs); in do_msgrcv()
1300 void msg_init_ns(struct ipc_namespace *ns) in msg_init_ns() argument
1302 ns->msg_ctlmax = MSGMAX; in msg_init_ns()
1303 ns->msg_ctlmnb = MSGMNB; in msg_init_ns()
1304 ns->msg_ctlmni = MSGMNI; in msg_init_ns()
1306 atomic_set(&ns->msg_bytes, 0); in msg_init_ns()
1307 atomic_set(&ns->msg_hdrs, 0); in msg_init_ns()
1308 ipc_init_ids(&ns->ids[IPC_MSG_IDS]); in msg_init_ns()
1312 void msg_exit_ns(struct ipc_namespace *ns) in msg_exit_ns() argument
1314 free_ipcs(ns, &msg_ids(ns), freeque); in msg_exit_ns()
1315 idr_destroy(&ns->ids[IPC_MSG_IDS].ipcs_idr); in msg_exit_ns()
1316 rhashtable_destroy(&ns->ids[IPC_MSG_IDS].key_ht); in msg_exit_ns()
1329 "%10d %10d %4o %10lu %10lu %5u %5u %5u %5u %5u %5u %10llu %10llu %10llu\n", in sysvipc_msg_proc_show()