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