]> git.kernelconcepts.de Git - karo-tx-linux.git/blob - include/linux/msg.h
Merge remote-tracking branch 'file-locks/linux-next'
[karo-tx-linux.git] / include / linux / msg.h
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 */