4 #include <linux/list.h>
5 #include <uapi/linux/msg.h>
7 /* one msg_msg structure for each message */
9 struct list_head m_list
;
11 int m_ts
; /* message text size */
12 struct msg_msgseg
* next
;
14 /* the actual message follows immediately */
17 /* one msq_queue structure for each present queue on the system */
19 struct kern_ipc_perm q_perm
;
20 time_t q_stime
; /* last msgsnd time */
21 time_t q_rtime
; /* last msgrcv time */
22 time_t q_ctime
; /* last change time */
23 unsigned long q_cbytes
; /* current number of bytes on queue */
24 unsigned long q_qnum
; /* number of messages in queue */
25 unsigned long q_qbytes
; /* max number of bytes on queue */
26 pid_t q_lspid
; /* pid of last msgsnd */
27 pid_t q_lrpid
; /* last receive pid */
29 struct list_head q_messages
;
30 struct list_head q_receivers
;
31 struct list_head q_senders
;
34 /* Helper routines for sys_msgsnd and sys_msgrcv */
35 extern long do_msgsnd(int msqid
, long mtype
, void __user
*mtext
,
36 size_t msgsz
, int msgflg
);
37 extern long do_msgrcv(int msqid
, void __user
*buf
, size_t bufsz
, long msgtyp
,
39 long (*msg_fill
)(void __user
*, struct msg_msg
*,
42 #endif /* _LINUX_MSG_H */