]> CyberLeo.Net >> Repos - FreeBSD/releng/9.2.git/blob - sys/compat/freebsd32/freebsd32_ipc.h
- Copy stable/9 to releng/9.2 as part of the 9.2-RELEASE cycle.
[FreeBSD/releng/9.2.git] / sys / compat / freebsd32 / freebsd32_ipc.h
1 /*-
2  * Copyright (c) 2002 Doug Rabson
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  *    notice, this list of conditions and the following disclaimer in the
12  *    documentation and/or other materials provided with the distribution.
13  *
14  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24  * SUCH DAMAGE.
25  *
26  * $FreeBSD$
27  */
28
29 #ifndef _COMPAT_FREEBSD32_FREEBSD32_IPC_H_
30 #define _COMPAT_FREEBSD32_FREEBSD32_IPC_H_
31
32 struct ipc_perm32 {
33         uid_t           cuid;
34         gid_t           cgid;
35         uid_t           uid;
36         gid_t           gid;
37         mode_t          mode;
38         uint16_t        seq;
39         uint32_t        key;
40 };
41
42 struct semid_ds32 {
43         struct ipc_perm32 sem_perm;
44         uint32_t        sem_base;
45         unsigned short  sem_nsems;
46         int32_t         sem_otime;
47         int32_t         sem_ctime;
48 };
49
50 union semun32 {
51         int             val;
52         uint32_t        buf;
53         uint32_t        array;
54 };
55
56 struct msqid_ds32 {
57         struct ipc_perm32 msg_perm;
58         uint32_t        msg_first;
59         uint32_t        msg_last;
60         uint32_t        msg_cbytes;
61         uint32_t        msg_qnum;
62         uint32_t        msg_qbytes;
63         pid_t           msg_lspid;
64         pid_t           msg_lrpid;
65         int32_t         msg_stime;
66         int32_t         msg_rtime;
67         int32_t         msg_ctime;
68 };
69
70 struct shmid_ds32 {
71         struct ipc_perm32 shm_perm;
72         int32_t         shm_segsz;
73         pid_t           shm_lpid;
74         pid_t           shm_cpid;
75         int             shm_nattch;
76         int32_t         shm_atime;
77         int32_t         shm_dtime;
78         int32_t         shm_ctime;
79 };
80
81 struct shm_info32 {
82         int32_t         used_ids;
83         uint32_t        shm_tot;
84         uint32_t        shm_rss;
85         uint32_t        shm_swp;
86         uint32_t        swap_attempts;
87         uint32_t        swap_successes;
88 };
89
90 struct shminfo32 {
91         uint32_t        shmmax;
92         uint32_t        shmmin;
93         uint32_t        shmmni;
94         uint32_t        shmseg;
95         uint32_t        shmall;
96 };
97
98 #if defined(COMPAT_FREEBSD4) || defined(COMPAT_FREEBSD5) || \
99     defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD7)
100 struct ipc_perm32_old {
101         uint16_t        cuid;
102         uint16_t        cgid;
103         uint16_t        uid;
104         uint16_t        gid;
105         uint16_t        mode;
106         uint16_t        seq;
107         uint32_t        key;
108 };
109
110 struct semid_ds32_old {
111         struct ipc_perm32_old sem_perm;
112         uint32_t        sem_base;
113         unsigned short  sem_nsems;
114         int32_t         sem_otime;
115         int32_t         sem_pad1;
116         int32_t         sem_ctime;
117         int32_t         sem_pad2;
118         int32_t         sem_pad3[4];
119 };
120
121 struct msqid_ds32_old {
122         struct ipc_perm32_old msg_perm;
123         uint32_t        msg_first;
124         uint32_t        msg_last;
125         uint32_t        msg_cbytes;
126         uint32_t        msg_qnum;
127         uint32_t        msg_qbytes;
128         pid_t           msg_lspid;
129         pid_t           msg_lrpid;
130         int32_t         msg_stime;
131         int32_t         msg_pad1;
132         int32_t         msg_rtime;
133         int32_t         msg_pad2;
134         int32_t         msg_ctime;
135         int32_t         msg_pad3;
136         int32_t         msg_pad4[4];
137 };
138
139 struct shmid_ds32_old {
140         struct ipc_perm32_old shm_perm;
141         int32_t         shm_segsz;
142         pid_t           shm_lpid;
143         pid_t           shm_cpid;
144         int16_t         shm_nattch;
145         int32_t         shm_atime;
146         int32_t         shm_dtime;
147         int32_t         shm_ctime;
148         uint32_t        shm_internal;
149 };
150
151 void    freebsd32_ipcperm_old_in(struct ipc_perm32_old *ip32,
152             struct ipc_perm *ip);
153 void    freebsd32_ipcperm_old_out(struct ipc_perm *ip,
154             struct ipc_perm32_old *ip32);
155 #endif
156
157 void    freebsd32_ipcperm_in(struct ipc_perm32 *ip32, struct ipc_perm *ip);
158 void    freebsd32_ipcperm_out(struct ipc_perm *ip, struct ipc_perm32 *ip32);
159
160 #endif /* !_COMPAT_FREEBSD32_FREEBSD32_IPC_H_ */