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 struct umtx_time32 {
98 struct timespec32 _timeout;
99 uint32_t _flags;
100 uint32_t _clockid;
101 };
102
103 struct umtx_robust_lists_params_compat32 {
104 uint32_t robust_list_offset;
105 uint32_t robust_priv_list_offset;
106 uint32_t robust_inact_offset;
107 };
108
109 struct umutex32 {
110 volatile __lwpid_t m_owner; /* Owner of the mutex */
111 __uint32_t m_flags; /* Flags of the mutex */
112 __uint32_t m_ceilings[2]; /* Priority protect ceiling */
113 __uint32_t m_rb_lnk; /* Robust linkage */
114 __uint32_t m_pad;
115 __uint32_t m_spare[2];
116 };
117
118 #define FREEBSD4_MFSNAMELEN 16
119 #define FREEBSD4_MNAMELEN (88 - 2 * sizeof(int32_t))
120
121 /* 4.x version */
122 struct statfs32 {
123 int32_t f_spare2;
124 int32_t f_bsize;
125 int32_t f_iosize;
126 int32_t f_blocks;
127 int32_t f_bfree;
128 int32_t f_bavail;
129 int32_t f_files;
130 int32_t f_ffree;
131 fsid_t f_fsid;
132 uid_t f_owner;
133 int32_t f_type;
134 int32_t f_flags;
135 int32_t f_syncwrites;
136 int32_t f_asyncwrites;
137 char f_fstypename[FREEBSD4_MFSNAMELEN];
138 char f_mntonname[FREEBSD4_MNAMELEN];
139 int32_t f_syncreads;
140 int32_t f_asyncreads;
141 int16_t f_spares1;
142 char f_mntfromname[FREEBSD4_MNAMELEN];
143 int16_t f_spares2 __packed;
144 int32_t f_spare[2];
145 };
146
147 struct iovec32 {
148 u_int32_t iov_base;
149 int iov_len;
150 };
151
152 struct msghdr32 {
153 u_int32_t msg_name;
154 socklen_t msg_namelen;
155 u_int32_t msg_iov;
156 int msg_iovlen;
157 u_int32_t msg_control;
158 socklen_t msg_controllen;
159 int msg_flags;
160 };
161
162 #if defined(__amd64__)
163 #define __STAT32_TIME_T_EXT 1
164 #endif
165
166 struct stat32 {
167 dev_t st_dev;
168 ino_t st_ino;
169 nlink_t st_nlink;
170 mode_t st_mode;
171 u_int16_t st_padding0;
172 uid_t st_uid;
173 gid_t st_gid;
174 u_int32_t st_padding1;
175 dev_t st_rdev;
176 #ifdef __STAT32_TIME_T_EXT
177 __int32_t st_atim_ext;
178 #endif
179 struct timespec32 st_atim;
180 #ifdef __STAT32_TIME_T_EXT
181 __int32_t st_mtim_ext;
182 #endif
183 struct timespec32 st_mtim;
184 #ifdef __STAT32_TIME_T_EXT
185 __int32_t st_ctim_ext;
186 #endif
187 struct timespec32 st_ctim;
188 #ifdef __STAT32_TIME_T_EXT
189 __int32_t st_btim_ext;
190 #endif
191 struct timespec32 st_birthtim;
192 off_t st_size;
193 int64_t st_blocks;
194 u_int32_t st_blksize;
195 u_int32_t st_flags;
196 u_int64_t st_gen;
197 u_int64_t st_spare[10];
198 };
199 struct freebsd11_stat32 {
200 u_int32_t st_dev;
201 u_int32_t st_ino;
202 mode_t st_mode;
203 u_int16_t st_nlink;
204 uid_t st_uid;
205 gid_t st_gid;
206 u_int32_t st_rdev;
207 struct timespec32 st_atim;
208 struct timespec32 st_mtim;
209 struct timespec32 st_ctim;
210 off_t st_size;
211 int64_t st_blocks;
212 u_int32_t st_blksize;
213 u_int32_t st_flags;
214 u_int32_t st_gen;
215 int32_t st_lspare;
216 struct timespec32 st_birthtim;
217 unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec32));
218 unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec32));
219 };
220
221 struct ostat32 {
222 __uint16_t st_dev;
223 __uint32_t st_ino;
224 mode_t st_mode;
225 __uint16_t st_nlink;
226 __uint16_t st_uid;
227 __uint16_t st_gid;
228 __uint16_t st_rdev;
229 __int32_t st_size;
230 struct timespec32 st_atim;
231 struct timespec32 st_mtim;
232 struct timespec32 st_ctim;
233 __int32_t st_blksize;
234 __int32_t st_blocks;
235 u_int32_t st_flags;
236 __uint32_t st_gen;
237 };
238
239 struct jail32_v0 {
240 u_int32_t version;
241 uint32_t path;
242 uint32_t hostname;
243 u_int32_t ip_number;
244 };
245
246 struct jail32 {
247 uint32_t version;
248 uint32_t path;
249 uint32_t hostname;
250 uint32_t jailname;
251 uint32_t ip4s;
252 uint32_t ip6s;
253 uint32_t ip4;
254 uint32_t ip6;
255 };
256
257 struct sigaction32 {
258 u_int32_t sa_u;
259 int sa_flags;
260 sigset_t sa_mask;
261 };
262
263 struct thr_param32 {
264 uint32_t start_func;
265 uint32_t arg;
266 uint32_t stack_base;
267 uint32_t stack_size;
268 uint32_t tls_base;
269 uint32_t tls_size;
270 uint32_t child_tid;
271 uint32_t parent_tid;
272 int32_t flags;
273 uint32_t rtp;
274 uint32_t spare[3];
275 };
276
277 struct i386_ldt_args32 {
278 uint32_t start;
279 uint32_t descs;
280 uint32_t num;
281 };
282
283 struct mq_attr32 {
284 int mq_flags;
285 int mq_maxmsg;
286 int mq_msgsize;
287 int mq_curmsgs;
288 int __reserved[4];
289 };
290
291 struct kinfo_proc32 {
292 int ki_structsize;
293 int ki_layout;
294 uint32_t ki_args;
295 uint32_t ki_paddr;
296 uint32_t ki_addr;
297 uint32_t ki_tracep;
298 uint32_t ki_textvp;
299 uint32_t ki_fd;
300 uint32_t ki_vmspace;
301 uint32_t ki_wchan;
302 pid_t ki_pid;
303 pid_t ki_ppid;
304 pid_t ki_pgid;
305 pid_t ki_tpgid;
306 pid_t ki_sid;
307 pid_t ki_tsid;
308 short ki_jobc;
309 short ki_spare_short1;
310 uint32_t ki_tdev_freebsd11;
311 sigset_t ki_siglist;
312 sigset_t ki_sigmask;
313 sigset_t ki_sigignore;
314 sigset_t ki_sigcatch;
315 uid_t ki_uid;
316 uid_t ki_ruid;
317 uid_t ki_svuid;
318 gid_t ki_rgid;
319 gid_t ki_svgid;
320 short ki_ngroups;
321 short ki_spare_short2;
322 gid_t ki_groups[KI_NGROUPS];
323 uint32_t ki_size;
324 int32_t ki_rssize;
325 int32_t ki_swrss;
326 int32_t ki_tsize;
327 int32_t ki_dsize;
328 int32_t ki_ssize;
329 u_short ki_xstat;
330 u_short ki_acflag;
331 fixpt_t ki_pctcpu;
332 u_int ki_estcpu;
333 u_int ki_slptime;
334 u_int ki_swtime;
335 u_int ki_cow;
336 u_int64_t ki_runtime;
337 struct timeval32 ki_start;
338 struct timeval32 ki_childtime;
339 int ki_flag;
340 int ki_kiflag;
341 int ki_traceflag;
342 char ki_stat;
343 signed char ki_nice;
344 char ki_lock;
345 char ki_rqindex;
346 u_char ki_oncpu_old;
347 u_char ki_lastcpu_old;
348 char ki_tdname[TDNAMLEN+1];
349 char ki_wmesg[WMESGLEN+1];
350 char ki_login[LOGNAMELEN+1];
351 char ki_lockname[LOCKNAMELEN+1];
352 char ki_comm[COMMLEN+1];
353 char ki_emul[KI_EMULNAMELEN+1];
354 char ki_loginclass[LOGINCLASSLEN+1];
355 char ki_moretdname[MAXCOMLEN-TDNAMLEN+1];
356 char ki_sparestrings[46];
357 int ki_spareints[KI_NSPARE_INT];
358 uint64_t ki_tdev;
359 int ki_oncpu;
360 int ki_lastcpu;
361 int ki_tracer;
362 int ki_flag2;
363 int ki_fibnum;
364 u_int ki_cr_flags;
365 int ki_jid;
366 int ki_numthreads;
367 lwpid_t ki_tid;
368 struct priority ki_pri;
369 struct rusage32 ki_rusage;
370 struct rusage32 ki_rusage_ch;
371 uint32_t ki_pcb;
372 uint32_t ki_kstack;
373 uint32_t ki_udata;
374 uint32_t ki_tdaddr;
375 uint32_t ki_spareptrs[KI_NSPARE_PTR]; /* spare room for growth */
376 int ki_sparelongs[KI_NSPARE_LONG];
377 int ki_sflag;
378 int ki_tdflags;
379 };
380
381 struct kinfo_sigtramp32 {
382 uint32_t ksigtramp_start;
383 uint32_t ksigtramp_end;
384 uint32_t ksigtramp_spare[4];
385 };
386
387 struct kld32_file_stat_1 {
388 int version; /* set to sizeof(struct kld_file_stat_1) */
389 char name[MAXPATHLEN];
390 int refs;
391 int id;
392 uint32_t address; /* load address */
393 uint32_t size; /* size in bytes */
394 };
395
396 struct kld32_file_stat {
397 int version; /* set to sizeof(struct kld_file_stat) */
398 char name[MAXPATHLEN];
399 int refs;
400 int id;
401 uint32_t address; /* load address */
402 uint32_t size; /* size in bytes */
403 char pathname[MAXPATHLEN];
404 };
405
406 struct procctl_reaper_pids32 {
407 u_int rp_count;
408 u_int rp_pad0[15];
409 uint32_t rp_pids;
410 };
411
412 struct timex32 {
413 unsigned int modes;
414 int32_t offset;
415 int32_t freq;
416 int32_t maxerror;
417 int32_t esterror;
418 int status;
419 int32_t constant;
420 int32_t precision;
421 int32_t tolerance;
422 int32_t ppsfreq;
423 int32_t jitter;
424 int shift;
425 int32_t stabil;
426 int32_t jitcnt;
427 int32_t calcnt;
428 int32_t errcnt;
429 int32_t stbcnt;
430 };
431
432 struct ptrace_sc_ret32 {
433 uint32_t sr_retval[2];
434 int sr_error;
435 };
436
437 struct ptrace_coredump32 {
438 int pc_fd;
439 uint32_t pc_flags;
440 uint32_t pc_limit1, pc_limit2;
441 };
442
443 struct ptrace_sc_remote32 {
444 struct ptrace_sc_ret32 pscr_ret;
445 u_int pscr_syscall;
446 u_int pscr_nargs;
447 uint32_t pscr_args;
448 };
449
450 #endif /* !_COMPAT_FREEBSD32_FREEBSD32_H_ */
Cache object: c6663b9fbddab76db1cfd76864e0feb9
|