linux/include/linux/msg.h
<<
>>
Prefs
   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 */
   8struct 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 */
  18struct 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 */
  35extern long do_msgsnd(int msqid, long mtype, void __user *mtext,
  36                        size_t msgsz, int msgflg);
  37extern 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