xref: /freebsd/sys/compat/freebsd32/freebsd32_ipc.h (revision 7f2d13d60721803155950276e0282fcd1e6bacc3)
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