]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - sys/compat/freebsd32/freebsd32.h
Merge sendmail 8.16.1 to HEAD: See contrib/sendmail/RELEASE_NOTES for details
[FreeBSD/FreeBSD.git] / sys / compat / freebsd32 / freebsd32.h
1 /*-
2  * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
3  *
4  * Copyright (c) 2001 Doug Rabson
5  * All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  * 1. Redistributions of source code must retain the above copyright
11  *    notice, this list of conditions and the following disclaimer.
12  * 2. Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions and the following disclaimer in the
14  *    documentation and/or other materials provided with the distribution.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26  * SUCH DAMAGE.
27  *
28  * $FreeBSD$
29  */
30
31 #ifndef _COMPAT_FREEBSD32_FREEBSD32_H_
32 #define _COMPAT_FREEBSD32_FREEBSD32_H_
33
34 #include <sys/abi_compat.h>
35 #include <sys/procfs.h>
36 #include <sys/socket.h>
37 #include <sys/user.h>
38
39 /*
40  * i386 is the only arch with a 32-bit time_t
41  */
42 #ifdef __amd64__
43 typedef int32_t time32_t;
44 #else
45 typedef int64_t time32_t;
46 #endif
47
48 struct timeval32 {
49         time32_t tv_sec;
50         int32_t tv_usec;
51 };
52
53 struct timespec32 {
54         time32_t tv_sec;
55         int32_t tv_nsec;
56 };
57
58 struct itimerspec32 {
59         struct timespec32  it_interval;
60         struct timespec32  it_value;
61 };
62
63 struct bintime32 {
64         time32_t sec;
65         uint32_t frac[2];
66 };
67
68 struct rusage32 {
69         struct timeval32 ru_utime;
70         struct timeval32 ru_stime;
71         int32_t ru_maxrss;
72         int32_t ru_ixrss;
73         int32_t ru_idrss;
74         int32_t ru_isrss;
75         int32_t ru_minflt;
76         int32_t ru_majflt;
77         int32_t ru_nswap;
78         int32_t ru_inblock;
79         int32_t ru_oublock;
80         int32_t ru_msgsnd;
81         int32_t ru_msgrcv;
82         int32_t ru_nsignals;
83         int32_t ru_nvcsw;
84         int32_t ru_nivcsw;
85 };
86
87 struct wrusage32 {
88         struct rusage32 wru_self;
89         struct rusage32 wru_children;
90 };
91
92 struct itimerval32 {
93         struct timeval32 it_interval;
94         struct timeval32 it_value;
95 };
96
97 #define FREEBSD4_MFSNAMELEN     16
98 #define FREEBSD4_MNAMELEN       (88 - 2 * sizeof(int32_t))
99
100 /* 4.x version */
101 struct statfs32 {
102         int32_t f_spare2;
103         int32_t f_bsize;
104         int32_t f_iosize;
105         int32_t f_blocks;
106         int32_t f_bfree;
107         int32_t f_bavail;
108         int32_t f_files;
109         int32_t f_ffree;
110         fsid_t  f_fsid;
111         uid_t   f_owner;
112         int32_t f_type;
113         int32_t f_flags;
114         int32_t f_syncwrites;
115         int32_t f_asyncwrites;
116         char    f_fstypename[FREEBSD4_MFSNAMELEN];
117         char    f_mntonname[FREEBSD4_MNAMELEN];
118         int32_t f_syncreads;
119         int32_t f_asyncreads;
120         int16_t f_spares1;
121         char    f_mntfromname[FREEBSD4_MNAMELEN];
122         int16_t f_spares2 __packed;
123         int32_t f_spare[2];
124 };
125
126 struct iovec32 {
127         u_int32_t iov_base;
128         int     iov_len;
129 };
130
131 struct msghdr32 {
132         u_int32_t        msg_name;
133         socklen_t        msg_namelen;
134         u_int32_t        msg_iov;
135         int              msg_iovlen;
136         u_int32_t        msg_control;
137         socklen_t        msg_controllen;
138         int              msg_flags;
139 };
140
141 #if defined(__amd64__)
142 #define __STAT32_TIME_T_EXT     1
143 #endif
144
145 struct stat32 {
146         dev_t st_dev;
147         ino_t st_ino;
148         nlink_t st_nlink;
149         mode_t  st_mode;
150         u_int16_t st_padding0;
151         uid_t   st_uid;
152         gid_t   st_gid;
153         u_int32_t st_padding1;
154         dev_t st_rdev;
155 #ifdef  __STAT32_TIME_T_EXT
156         __int32_t st_atim_ext;
157 #endif
158         struct timespec32 st_atim;
159 #ifdef  __STAT32_TIME_T_EXT
160         __int32_t st_mtim_ext;
161 #endif
162         struct timespec32 st_mtim;
163 #ifdef  __STAT32_TIME_T_EXT
164         __int32_t st_ctim_ext;
165 #endif
166         struct timespec32 st_ctim;
167 #ifdef  __STAT32_TIME_T_EXT
168         __int32_t st_btim_ext;
169 #endif
170         struct timespec32 st_birthtim;
171         off_t   st_size;
172         int64_t st_blocks;
173         u_int32_t st_blksize;
174         u_int32_t st_flags;
175         u_int64_t st_gen;
176         u_int64_t st_spare[10];
177 };
178 struct freebsd11_stat32 {
179         u_int32_t st_dev;
180         u_int32_t st_ino;
181         mode_t  st_mode;
182         u_int16_t st_nlink;
183         uid_t   st_uid;
184         gid_t   st_gid;
185         u_int32_t st_rdev;
186         struct timespec32 st_atim;
187         struct timespec32 st_mtim;
188         struct timespec32 st_ctim;
189         off_t   st_size;
190         int64_t st_blocks;
191         u_int32_t st_blksize;
192         u_int32_t st_flags;
193         u_int32_t st_gen;
194         int32_t st_lspare;
195         struct timespec32 st_birthtim;
196         unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec32));
197         unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec32));
198 };
199
200 struct ostat32 {
201         __uint16_t st_dev;
202         __uint32_t st_ino;
203         mode_t  st_mode;
204         __uint16_t st_nlink;
205         __uint16_t st_uid;
206         __uint16_t st_gid;
207         __uint16_t st_rdev;
208         __int32_t st_size;
209         struct timespec32 st_atim;
210         struct timespec32 st_mtim;
211         struct timespec32 st_ctim;
212         __int32_t st_blksize;
213         __int32_t st_blocks;
214         u_int32_t st_flags;
215         __uint32_t st_gen;
216 };
217
218 struct jail32_v0 {
219         u_int32_t       version;
220         uint32_t        path;
221         uint32_t        hostname;
222         u_int32_t       ip_number;
223 };
224
225 struct jail32 {
226         uint32_t        version;
227         uint32_t        path;
228         uint32_t        hostname;
229         uint32_t        jailname;
230         uint32_t        ip4s;
231         uint32_t        ip6s;
232         uint32_t        ip4;
233         uint32_t        ip6;
234 };
235
236 struct sigaction32 {
237         u_int32_t       sa_u;
238         int             sa_flags;
239         sigset_t        sa_mask;
240 };
241
242 struct thr_param32 {
243         uint32_t start_func;
244         uint32_t arg;
245         uint32_t stack_base;
246         uint32_t stack_size;
247         uint32_t tls_base;
248         uint32_t tls_size;
249         uint32_t child_tid;
250         uint32_t parent_tid;
251         int32_t  flags;
252         uint32_t rtp;
253         uint32_t spare[3];
254 };
255
256 struct i386_ldt_args32 {
257         uint32_t start;
258         uint32_t descs;
259         uint32_t num;
260 };
261
262 struct mq_attr32 {
263         int     mq_flags;
264         int     mq_maxmsg;
265         int     mq_msgsize;
266         int     mq_curmsgs;
267         int     __reserved[4];
268 };
269
270 struct kinfo_proc32 {
271         int     ki_structsize;
272         int     ki_layout;
273         uint32_t ki_args;
274         uint32_t ki_paddr;
275         uint32_t ki_addr;
276         uint32_t ki_tracep;
277         uint32_t ki_textvp;
278         uint32_t ki_fd;
279         uint32_t ki_vmspace;
280         uint32_t ki_wchan;
281         pid_t   ki_pid;
282         pid_t   ki_ppid;
283         pid_t   ki_pgid;
284         pid_t   ki_tpgid;
285         pid_t   ki_sid;
286         pid_t   ki_tsid;
287         short   ki_jobc;
288         short   ki_spare_short1;
289         uint32_t ki_tdev_freebsd11;
290         sigset_t ki_siglist;
291         sigset_t ki_sigmask;
292         sigset_t ki_sigignore;
293         sigset_t ki_sigcatch;
294         uid_t   ki_uid;
295         uid_t   ki_ruid;
296         uid_t   ki_svuid;
297         gid_t   ki_rgid;
298         gid_t   ki_svgid;
299         short   ki_ngroups;
300         short   ki_spare_short2;
301         gid_t   ki_groups[KI_NGROUPS];
302         uint32_t ki_size;
303         int32_t ki_rssize;
304         int32_t ki_swrss;
305         int32_t ki_tsize;
306         int32_t ki_dsize;
307         int32_t ki_ssize;
308         u_short ki_xstat;
309         u_short ki_acflag;
310         fixpt_t ki_pctcpu;
311         u_int   ki_estcpu;
312         u_int   ki_slptime;
313         u_int   ki_swtime;
314         u_int   ki_cow;
315         u_int64_t ki_runtime;
316         struct  timeval32 ki_start;
317         struct  timeval32 ki_childtime;
318         int     ki_flag;
319         int     ki_kiflag;
320         int     ki_traceflag;
321         char    ki_stat;
322         signed char ki_nice;
323         char    ki_lock;
324         char    ki_rqindex;
325         u_char  ki_oncpu_old;
326         u_char  ki_lastcpu_old;
327         char    ki_tdname[TDNAMLEN+1];
328         char    ki_wmesg[WMESGLEN+1];
329         char    ki_login[LOGNAMELEN+1];
330         char    ki_lockname[LOCKNAMELEN+1];
331         char    ki_comm[COMMLEN+1];
332         char    ki_emul[KI_EMULNAMELEN+1];
333         char    ki_loginclass[LOGINCLASSLEN+1];
334         char    ki_moretdname[MAXCOMLEN-TDNAMLEN+1];
335         char    ki_sparestrings[46];
336         int     ki_spareints[KI_NSPARE_INT];
337         uint64_t ki_tdev;
338         int     ki_oncpu;
339         int     ki_lastcpu;
340         int     ki_tracer;
341         int     ki_flag2;
342         int     ki_fibnum;
343         u_int   ki_cr_flags;
344         int     ki_jid;
345         int     ki_numthreads;
346         lwpid_t ki_tid;
347         struct  priority ki_pri;
348         struct  rusage32 ki_rusage;
349         struct  rusage32 ki_rusage_ch;
350         uint32_t ki_pcb;
351         uint32_t ki_kstack;
352         uint32_t ki_udata;
353         uint32_t ki_tdaddr;
354         uint32_t ki_spareptrs[KI_NSPARE_PTR];   /* spare room for growth */
355         int     ki_sparelongs[KI_NSPARE_LONG];
356         int     ki_sflag;
357         int     ki_tdflags;
358 };
359
360 struct kinfo_sigtramp32 {
361         uint32_t ksigtramp_start;
362         uint32_t ksigtramp_end;
363         uint32_t ksigtramp_spare[4];
364 };
365
366 struct kld32_file_stat_1 {
367         int     version;        /* set to sizeof(struct kld_file_stat_1) */
368         char    name[MAXPATHLEN];
369         int     refs;
370         int     id;
371         uint32_t address;       /* load address */
372         uint32_t size;          /* size in bytes */
373 };
374
375 struct kld32_file_stat {
376         int     version;        /* set to sizeof(struct kld_file_stat) */
377         char    name[MAXPATHLEN];
378         int     refs;
379         int     id;
380         uint32_t address;       /* load address */
381         uint32_t size;          /* size in bytes */
382         char    pathname[MAXPATHLEN];
383 };
384
385 struct procctl_reaper_pids32 {
386         u_int   rp_count;
387         u_int   rp_pad0[15];
388         uint32_t rp_pids;
389 };
390
391 #endif /* !_COMPAT_FREEBSD32_FREEBSD32_H_ */