forked from mirrors/linux
		
	 3a665531a3
			
		
	
	
		3a665531a3
		
	
	
	
	
		
			
			This test can be used to check wheither kernel supports IPC message queue copy and restore features (required by CRIU project). Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com> Cc: Serge Hallyn <serge.hallyn@canonical.com> Cc: "Eric W. Biederman" <ebiederm@xmission.com> Cc: Pavel Emelyanov <xemul@parallels.com> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> Cc: Michael Kerrisk <mtk.manpages@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
		
			
				
	
	
		
			42 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef _LINUX_MSG_H
 | |
| #define _LINUX_MSG_H
 | |
| 
 | |
| #include <linux/list.h>
 | |
| #include <uapi/linux/msg.h>
 | |
| 
 | |
| /* one msg_msg structure for each message */
 | |
| struct msg_msg {
 | |
| 	struct list_head m_list; 
 | |
| 	long  m_type;          
 | |
| 	int m_ts;           /* message text size */
 | |
| 	struct msg_msgseg* next;
 | |
| 	void *security;
 | |
| 	/* the actual message follows immediately */
 | |
| };
 | |
| 
 | |
| /* one msq_queue structure for each present queue on the system */
 | |
| struct msg_queue {
 | |
| 	struct kern_ipc_perm q_perm;
 | |
| 	time_t q_stime;			/* last msgsnd time */
 | |
| 	time_t q_rtime;			/* last msgrcv time */
 | |
| 	time_t q_ctime;			/* last change time */
 | |
| 	unsigned long q_cbytes;		/* current number of bytes on queue */
 | |
| 	unsigned long q_qnum;		/* number of messages in queue */
 | |
| 	unsigned long q_qbytes;		/* max number of bytes on queue */
 | |
| 	pid_t q_lspid;			/* pid of last msgsnd */
 | |
| 	pid_t q_lrpid;			/* last receive pid */
 | |
| 
 | |
| 	struct list_head q_messages;
 | |
| 	struct list_head q_receivers;
 | |
| 	struct list_head q_senders;
 | |
| };
 | |
| 
 | |
| /* Helper routines for sys_msgsnd and sys_msgrcv */
 | |
| extern long do_msgsnd(int msqid, long mtype, void __user *mtext,
 | |
| 			size_t msgsz, int msgflg);
 | |
| extern long do_msgrcv(int msqid, void __user *buf, size_t bufsz, long msgtyp,
 | |
| 		      int msgflg,
 | |
| 		      long (*msg_fill)(void __user *, struct msg_msg *,
 | |
| 				       size_t));
 | |
| 
 | |
| #endif /* _LINUX_MSG_H */
 |