1 /*- 2 * Copyright (c) 2002 Doug Rabson 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 14 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24 * SUCH DAMAGE. 25 * 26 * $FreeBSD$ 27 */ 28 29 #ifndef _COMPAT_FREEBSD32_FREEBSD32_IPC_H_ 30 #define _COMPAT_FREEBSD32_FREEBSD32_IPC_H_ 31 32 struct ipc_perm32 { 33 uid_t cuid; 34 gid_t cgid; 35 uid_t uid; 36 gid_t gid; 37 mode_t mode; 38 uint16_t seq; 39 uint32_t key; 40 }; 41 42 struct semid_ds32 { 43 struct ipc_perm32 sem_perm; 44 uint32_t sem_base; 45 unsigned short sem_nsems; 46 int32_t sem_otime; 47 int32_t sem_ctime; 48 }; 49 50 union semun32 { 51 int val; 52 uint32_t buf; 53 uint32_t array; 54 }; 55 56 struct msqid_ds32 { 57 struct ipc_perm32 msg_perm; 58 uint32_t msg_first; 59 uint32_t msg_last; 60 uint32_t msg_cbytes; 61 uint32_t msg_qnum; 62 uint32_t msg_qbytes; 63 pid_t msg_lspid; 64 pid_t msg_lrpid; 65 int32_t msg_stime; 66 int32_t msg_rtime; 67 int32_t msg_ctime; 68 }; 69 70 struct shmid_ds32 { 71 struct ipc_perm32 shm_perm; 72 int32_t shm_segsz; 73 pid_t shm_lpid; 74 pid_t shm_cpid; 75 unsigned int shm_nattch; 76 int32_t shm_atime; 77 int32_t shm_dtime; 78 int32_t shm_ctime; 79 }; 80 81 struct shm_info32 { 82 int32_t used_ids; 83 uint32_t shm_tot; 84 uint32_t shm_rss; 85 uint32_t shm_swp; 86 uint32_t swap_attempts; 87 uint32_t swap_successes; 88 }; 89 90 struct shminfo32 { 91 uint32_t shmmax; 92 uint32_t shmmin; 93 uint32_t shmmni; 94 uint32_t shmseg; 95 uint32_t shmall; 96 }; 97 98 #if defined(COMPAT_FREEBSD4) || defined(COMPAT_FREEBSD5) || \ 99 defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD7) 100 struct ipc_perm32_old { 101 uint16_t cuid; 102 uint16_t cgid; 103 uint16_t uid; 104 uint16_t gid; 105 uint16_t mode; 106 uint16_t seq; 107 uint32_t key; 108 }; 109 110 struct semid_ds32_old { 111 struct ipc_perm32_old sem_perm; 112 uint32_t sem_base; 113 unsigned short sem_nsems; 114 int32_t sem_otime; 115 int32_t sem_pad1; 116 int32_t sem_ctime; 117 int32_t sem_pad2; 118 int32_t sem_pad3[4]; 119 }; 120 121 struct msqid_ds32_old { 122 struct ipc_perm32_old msg_perm; 123 uint32_t msg_first; 124 uint32_t msg_last; 125 uint32_t msg_cbytes; 126 uint32_t msg_qnum; 127 uint32_t msg_qbytes; 128 pid_t msg_lspid; 129 pid_t msg_lrpid; 130 int32_t msg_stime; 131 int32_t msg_pad1; 132 int32_t msg_rtime; 133 int32_t msg_pad2; 134 int32_t msg_ctime; 135 int32_t msg_pad3; 136 int32_t msg_pad4[4]; 137 }; 138 139 struct shmid_ds32_old { 140 struct ipc_perm32_old shm_perm; 141 int32_t shm_segsz; 142 pid_t shm_lpid; 143 pid_t shm_cpid; 144 int16_t shm_nattch; 145 int32_t shm_atime; 146 int32_t shm_dtime; 147 int32_t shm_ctime; 148 uint32_t shm_internal; 149 }; 150 151 void freebsd32_ipcperm_old_in(struct ipc_perm32_old *ip32, 152 struct ipc_perm *ip); 153 void freebsd32_ipcperm_old_out(struct ipc_perm *ip, 154 struct ipc_perm32_old *ip32); 155 #endif 156 157 void freebsd32_ipcperm_in(struct ipc_perm32 *ip32, struct ipc_perm *ip); 158 void freebsd32_ipcperm_out(struct ipc_perm *ip, struct ipc_perm32 *ip32); 159 160 #endif /* !_COMPAT_FREEBSD32_FREEBSD32_IPC_H_ */ 161