1 /* $NetBSD: linux_msg.h,v 1.5 1998/10/04 00:02:37 fvdl Exp $ */ 2 3 /*- 4 * Copyright (c) 1995, 1998 The NetBSD Foundation, Inc. 5 * All rights reserved. 6 * 7 * This code is derived from software contributed to The NetBSD Foundation 8 * by Frank van der Linden and Eric Haszlakiewicz. 9 * 10 * Redistribution and use in source and binary forms, with or without 11 * modification, are permitted provided that the following conditions 12 * are met: 13 * 1. Redistributions of source code must retain the above copyright 14 * notice, this list of conditions and the following disclaimer. 15 * 2. Redistributions in binary form must reproduce the above copyright 16 * notice, this list of conditions and the following disclaimer in the 17 * documentation and/or other materials provided with the distribution. 18 * 3. All advertising materials mentioning features or use of this software 19 * must display the following acknowledgement: 20 * This product includes software developed by the NetBSD 21 * Foundation, Inc. and its contributors. 22 * 4. Neither the name of The NetBSD Foundation nor the names of its 23 * contributors may be used to endorse or promote products derived 24 * from this software without specific prior written permission. 25 * 26 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 27 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 28 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 29 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 30 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 31 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 32 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 33 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 34 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 35 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 36 * POSSIBILITY OF SUCH DAMAGE. 37 */ 38 39 #ifndef _LINUX_MSG_H 40 #define _LINUX_MSG_H 41 42 #include <sys/msg.h> 43 44 /* 45 * msq_id_ds structure. Mostly the same fields, except for some internal 46 * ones. 47 */ 48 struct linux_msqid_ds { 49 struct linux_ipc_perm l_msg_perm; 50 void *l_msg_first; 51 void *l_msg_last; 52 linux_time_t l_msg_stime; 53 linux_time_t l_msg_rtime; 54 linux_time_t l_msg_ctime; 55 void *l_wwait; /* Linux internal */ 56 void *l_rwait; /* Linux internal */ 57 ushort l_msg_cbytes; 58 ushort l_msg_qnum; 59 ushort l_msg_qbytes; 60 ushort l_msg_lspid; 61 ushort l_msg_lrpid; 62 }; 63 64 #define LINUX_MSG_NOERROR 0x1000 65 #define LINUX_MSG_EXCEPT 0x2000 66 67 /* 68 * The notorious anonymous message structure. 69 */ 70 struct linux_mymsg { 71 long l_mtype; 72 char l_mtext[1]; 73 }; 74 75 /* 76 * This kludge is used for the 6th argument to the msgrcv system 77 * call, to get around the maximum of 5 arguments to a syscall in Linux. 78 */ 79 struct linux_msgrcv_msgarg { 80 struct linux_mymsg *msg; 81 int type; 82 }; 83 /* 84 * For msgctl calls. 85 */ 86 struct linux_msginfo { 87 int l_msgpool; 88 int l_msgmap; 89 int l_msgmax; 90 int l_msgmnb; 91 int l_msgmni; 92 int l_msgssz; 93 int l_msgtql; 94 ushort l_msgseg; 95 }; 96 97 #define LINUX_MSG_STAT 11 98 #define LINUX_MSG_INFO 12 99 100 /* Pretend the sys_msgctl syscall is defined */ 101 struct linux_sys_msgctl_args { 102 syscallarg(int) msqid; 103 syscallarg(int) cmd; 104 syscallarg(struct linux_msqid_ds *) buf; 105 }; 106 107 108 #ifdef SYSVMSG 109 #ifdef _KERNEL 110 __BEGIN_DECLS 111 int linux_sys_msgctl __P((struct proc *, void *, register_t *)); 112 void linux_to_bsd_msqid_ds __P((struct linux_msqid_ds *, 113 struct msqid_ds *)); 114 void bsd_to_linux_msqid_ds __P((struct msqid_ds *, 115 struct linux_msqid_ds *)); 116 __END_DECLS 117 #endif /* !_KERNEL */ 118 #endif /* !SYSVMSG */ 119 120 #endif /* !_LINUX_MSG_H */ 121