• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef _LINUX_MSG_H
2 #define _LINUX_MSG_H
3 
4 #include <linux/list.h>
5 #include <uapi/linux/msg.h>
6 
7 /* one msg_msg structure for each message */
8 struct msg_msg {
9 	struct list_head m_list;
10 	long m_type;
11 	size_t m_ts;		/* message text size */
12 	struct msg_msgseg *next;
13 	void *security;
14 	/* the actual message follows immediately */
15 };
16 
17 /* one msq_queue structure for each present queue on the system */
18 struct msg_queue {
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 */
28 
29 	struct list_head q_messages;
30 	struct list_head q_receivers;
31 	struct list_head q_senders;
32 };
33 
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,
38 		      int msgflg,
39 		      long (*msg_fill)(void __user *, struct msg_msg *,
40 				       size_t));
41 
42 #endif /* _LINUX_MSG_H */
43