msg.h 1.3 KB

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