blob: f3f302f9c1975a67ea1c01a828403950fac8a061 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001#ifndef _LINUX_MSG_H
2#define _LINUX_MSG_H
3
David Woodhouse77597ad2006-04-25 14:26:46 +01004#include <linux/list.h>
David Howells607ca462012-10-13 10:46:48 +01005#include <uapi/linux/msg.h>
Linus Torvalds1da177e2005-04-16 15:20:36 -07006
7/* one msg_msg structure for each message */
8struct msg_msg {
Mathias Krause4e9b45a2013-11-12 15:11:47 -08009 struct list_head m_list;
10 long m_type;
11 size_t m_ts; /* message text size */
Manfred Spraul239521f2014-01-27 17:07:04 -080012 struct msg_msgseg *next;
Linus Torvalds1da177e2005-04-16 15:20:36 -070013 void *security;
14 /* the actual message follows immediately */
15};
16
17/* one msq_queue structure for each present queue on the system */
18struct msg_queue {
19 struct kern_ipc_perm q_perm;
Linus Torvalds1da177e2005-04-16 15:20:36 -070020 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
suzuki651971c2006-12-06 20:37:48 -080034/* Helper routines for sys_msgsnd and sys_msgrcv */
35extern long do_msgsnd(int msqid, long mtype, void __user *mtext,
36 size_t msgsz, int msgflg);
Stanislav Kinsburskyf9dd87f2013-01-04 15:34:52 -080037extern long do_msgrcv(int msqid, void __user *buf, size_t bufsz, long msgtyp,
38 int msgflg,
Stanislav Kinsbursky3a665532013-01-04 15:34:56 -080039 long (*msg_fill)(void __user *, struct msg_msg *,
40 size_t));
suzuki651971c2006-12-06 20:37:48 -080041
Linus Torvalds1da177e2005-04-16 15:20:36 -070042#endif /* _LINUX_MSG_H */