| #ifndef _LINUX_MSG_H | |
| #define _LINUX_MSG_H | |
| #include <linux/list.h> | |
| #include <uapi/linux/msg.h> | |
| /* one msg_msg structure for each message */ | |
| struct msg_msg { | |
| struct list_head m_list; | |
| long m_type; | |
| int m_ts; /* message text size */ | |
| struct msg_msgseg* next; | |
| void *security; | |
| /* the actual message follows immediately */ | |
| }; | |
| /* one msq_queue structure for each present queue on the system */ | |
| struct msg_queue { | |
| struct kern_ipc_perm q_perm; | |
| time_t q_stime; /* last msgsnd time */ | |
| time_t q_rtime; /* last msgrcv time */ | |
| time_t q_ctime; /* last change time */ | |
| unsigned long q_cbytes; /* current number of bytes on queue */ | |
| unsigned long q_qnum; /* number of messages in queue */ | |
| unsigned long q_qbytes; /* max number of bytes on queue */ | |
| pid_t q_lspid; /* pid of last msgsnd */ | |
| pid_t q_lrpid; /* last receive pid */ | |
| struct list_head q_messages; | |
| struct list_head q_receivers; | |
| struct list_head q_senders; | |
| }; | |
| /* Helper routines for sys_msgsnd and sys_msgrcv */ | |
| extern long do_msgsnd(int msqid, long mtype, void __user *mtext, | |
| size_t msgsz, int msgflg); | |
| extern long do_msgrcv(int msqid, long *pmtype, void __user *mtext, | |
| size_t msgsz, long msgtyp, int msgflg); | |
| #endif /* _LINUX_MSG_H */ |