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