1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef _LINUX_MSG_H 3 #define _LINUX_MSG_H 4 5 #include <linux/list.h> 6 #include <linux/time64.h> 7 #include <uapi/linux/msg.h> 8 9 /* one msg_msg structure for each message */ 10 struct msg_msg { 11 struct list_head m_list; 12 long m_type; 13 size_t m_ts; /* message text size */ 14 struct msg_msgseg *next; 15 void *security; 16 /* the actual message follows immediately */ 17 }; 18 19 /* one msq_queue structure for each present queue on the system */ 20 struct msg_queue { 21 struct kern_ipc_perm q_perm; 22 time64_t q_stime; /* last msgsnd time */ 23 time64_t q_rtime; /* last msgrcv time */ 24 time64_t q_ctime; /* last change time */ 25 unsigned long q_cbytes; /* current number of bytes on queue */ 26 unsigned long q_qnum; /* number of messages in queue */ 27 unsigned long q_qbytes; /* max number of bytes on queue */ 28 pid_t q_lspid; /* pid of last msgsnd */ 29 pid_t q_lrpid; /* last receive pid */ 30 31 struct list_head q_messages; 32 struct list_head q_receivers; 33 struct list_head q_senders; 34 } __randomize_layout; 35 36 #endif /* _LINUX_MSG_H */ 37