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