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