aboutsummaryrefslogtreecommitdiff
path: root/sys/compat/freebsd32/freebsd32_ipc.h
blob: f379ae23a2ac46e5759ee1459609e9b47bba55b6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
/*-
 * Copyright (c) 2002 Doug Rabson
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * $FreeBSD: src/sys/compat/freebsd32/freebsd32_ipc.h,v 1.3.2.2.4.1 2010/12/21 17:09:25 kensmith Exp $
 */

#ifndef _COMPAT_FREEBSD32_FREEBSD32_IPC_H_
#define _COMPAT_FREEBSD32_FREEBSD32_IPC_H_

struct ipc_perm32 {
	uid_t		cuid;
	gid_t		cgid;
	uid_t		uid;
	gid_t		gid;
	mode_t		mode;
	uint16_t	seq;
	uint32_t	key;
};

struct semid_ds32 {
	struct ipc_perm32 sem_perm;
	uint32_t	sem_base;
	unsigned short	sem_nsems;
	int32_t		sem_otime;
	int32_t		sem_ctime;
};

union semun32 {
	int		val;
	uint32_t	buf;
	uint32_t	array;
};

struct msqid_ds32 {
	struct ipc_perm32 msg_perm;
	uint32_t	msg_first;
	uint32_t	msg_last;
	uint32_t	msg_cbytes;
	uint32_t	msg_qnum;
	uint32_t	msg_qbytes;
	pid_t		msg_lspid;
	pid_t		msg_lrpid;
	int32_t		msg_stime;
	int32_t		msg_rtime;
	int32_t		msg_ctime;
};

struct shmid_ds32 {
	struct ipc_perm32 shm_perm;
	int32_t		shm_segsz;
	pid_t		shm_lpid;
	pid_t		shm_cpid;
	int		shm_nattch;
	int32_t		shm_atime;
	int32_t		shm_dtime;
	int32_t		shm_ctime;
};

struct shm_info32 {
	int32_t		used_ids;
	uint32_t	shm_tot;
	uint32_t	shm_rss;
	uint32_t	shm_swp;
	uint32_t	swap_attempts;
	uint32_t	swap_successes;
};

struct shminfo32 {
	uint32_t	shmmax;
	uint32_t	shmmin;
	uint32_t	shmmni;
	uint32_t	shmseg;
	uint32_t	shmall;
};

#if defined(COMPAT_FREEBSD4) || defined(COMPAT_FREEBSD5) || \
    defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD7)
struct ipc_perm32_old {
	uint16_t	cuid;
	uint16_t	cgid;
	uint16_t	uid;
	uint16_t	gid;
	uint16_t	mode;
	uint16_t	seq;
	uint32_t	key;
};

struct semid_ds32_old {
	struct ipc_perm32_old sem_perm;
	uint32_t	sem_base;
	unsigned short	sem_nsems;
	int32_t		sem_otime;
	int32_t		sem_pad1;
	int32_t		sem_ctime;
	int32_t		sem_pad2;
	int32_t		sem_pad3[4];
};

struct msqid_ds32_old {
	struct ipc_perm32_old msg_perm;
	uint32_t	msg_first;
	uint32_t	msg_last;
	uint32_t	msg_cbytes;
	uint32_t	msg_qnum;
	uint32_t	msg_qbytes;
	pid_t		msg_lspid;
	pid_t		msg_lrpid;
	int32_t		msg_stime;
	int32_t		msg_pad1;
	int32_t		msg_rtime;
	int32_t		msg_pad2;
	int32_t		msg_ctime;
	int32_t		msg_pad3;
	int32_t		msg_pad4[4];
};

struct shmid_ds32_old {
	struct ipc_perm32_old shm_perm;
	int32_t		shm_segsz;
	pid_t		shm_lpid;
	pid_t		shm_cpid;
	int16_t		shm_nattch;
	int32_t		shm_atime;
	int32_t		shm_dtime;
	int32_t		shm_ctime;
	uint32_t	shm_internal;
};

void	freebsd32_ipcperm_old_in(struct ipc_perm32_old *ip32,
	    struct ipc_perm *ip);
void	freebsd32_ipcperm_old_out(struct ipc_perm *ip,
	    struct ipc_perm32_old *ip32);
#endif

void	freebsd32_ipcperm_in(struct ipc_perm32 *ip32, struct ipc_perm *ip);
void	freebsd32_ipcperm_out(struct ipc_perm *ip, struct ipc_perm32 *ip32);

#endif /* !_COMPAT_FREEBSD32_FREEBSD32_IPC_H_ */