1 | //===-- sanitizer_platform_limits_freebsd.h -------------------------------===// |
2 | // |
3 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
4 | // See https://llvm.org/LICENSE.txt for license information. |
5 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
6 | // |
7 | //===----------------------------------------------------------------------===// |
8 | // |
9 | // This file is a part of Sanitizer common code. |
10 | // |
11 | // Sizes and layouts of platform-specific FreeBSD data structures. |
12 | //===----------------------------------------------------------------------===// |
13 | |
14 | #ifndef SANITIZER_PLATFORM_LIMITS_FREEBSD_H |
15 | #define SANITIZER_PLATFORM_LIMITS_FREEBSD_H |
16 | |
17 | #if SANITIZER_FREEBSD |
18 | |
19 | # include "sanitizer_internal_defs.h" |
20 | # include "sanitizer_platform.h" |
21 | # include "sanitizer_platform_limits_posix.h" |
22 | |
23 | // Get sys/_types.h, because that tells us whether 64-bit inodes are |
24 | // used in struct dirent below. |
25 | # include <sys/_types.h> |
26 | |
27 | namespace __sanitizer { |
28 | void *__sanitizer_get_link_map_by_dlopen_handle(void *handle); |
29 | # define GET_LINK_MAP_BY_DLOPEN_HANDLE(handle) \ |
30 | (link_map *)__sanitizer_get_link_map_by_dlopen_handle(handle) |
31 | |
32 | extern unsigned struct_utsname_sz; |
33 | extern unsigned struct_stat_sz; |
34 | # if defined(__powerpc64__) |
35 | const unsigned struct___old_kernel_stat_sz = 0; |
36 | # else |
37 | const unsigned struct___old_kernel_stat_sz = 32; |
38 | # endif |
39 | extern unsigned struct_rusage_sz; |
40 | extern unsigned siginfo_t_sz; |
41 | extern unsigned struct_itimerval_sz; |
42 | extern unsigned pthread_t_sz; |
43 | extern unsigned pthread_mutex_t_sz; |
44 | extern unsigned pthread_cond_t_sz; |
45 | extern unsigned pid_t_sz; |
46 | extern unsigned timeval_sz; |
47 | extern unsigned uid_t_sz; |
48 | extern unsigned gid_t_sz; |
49 | extern unsigned fpos_t_sz; |
50 | extern unsigned mbstate_t_sz; |
51 | extern unsigned struct_timezone_sz; |
52 | extern unsigned struct_tms_sz; |
53 | extern unsigned struct_itimerspec_sz; |
54 | extern unsigned struct_sigevent_sz; |
55 | extern unsigned struct_stack_t_sz; |
56 | extern unsigned struct_sched_param_sz; |
57 | extern unsigned struct_statfs64_sz; |
58 | extern unsigned struct_statfs_sz; |
59 | extern unsigned struct_sockaddr_sz; |
60 | unsigned ucontext_t_sz(void *ctx); |
61 | extern unsigned struct_rlimit_sz; |
62 | extern unsigned struct_utimbuf_sz; |
63 | extern unsigned struct_timespec_sz; |
64 | extern unsigned struct_regmatch_sz; |
65 | extern unsigned struct_regex_sz; |
66 | extern unsigned struct_FTS_sz; |
67 | extern unsigned struct_FTSENT_sz; |
68 | extern const int unvis_valid; |
69 | extern const int unvis_validpush; |
70 | |
71 | struct __sanitizer_iocb { |
72 | u64 aio_data; |
73 | u32 aio_key_or_aio_reserved1; // Simply crazy. |
74 | u32 aio_reserved1_or_aio_key; // Luckily, we don't need these. |
75 | u16 aio_lio_opcode; |
76 | s16 aio_reqprio; |
77 | u32 aio_fildes; |
78 | u64 aio_buf; |
79 | u64 aio_nbytes; |
80 | s64 aio_offset; |
81 | u64 aio_reserved2; |
82 | u64 aio_reserved3; |
83 | }; |
84 | |
85 | struct __sanitizer_io_event { |
86 | u64 data; |
87 | u64 obj; |
88 | u64 res; |
89 | u64 res2; |
90 | }; |
91 | |
92 | const unsigned iocb_cmd_pread = 0; |
93 | const unsigned iocb_cmd_pwrite = 1; |
94 | const unsigned iocb_cmd_preadv = 7; |
95 | const unsigned iocb_cmd_pwritev = 8; |
96 | |
97 | struct __sanitizer___sysctl_args { |
98 | int *name; |
99 | int nlen; |
100 | void *oldval; |
101 | uptr *oldlenp; |
102 | void *newval; |
103 | uptr newlen; |
104 | unsigned long ___unused[4]; |
105 | }; |
106 | |
107 | struct __sanitizer_ipc_perm { |
108 | unsigned int cuid; |
109 | unsigned int cgid; |
110 | unsigned int uid; |
111 | unsigned int gid; |
112 | unsigned short mode; |
113 | unsigned short seq; |
114 | long key; |
115 | }; |
116 | |
117 | struct __sanitizer_protoent { |
118 | char *p_name; |
119 | char **p_aliases; |
120 | int p_proto; |
121 | }; |
122 | |
123 | struct __sanitizer_netent { |
124 | char *n_name; |
125 | char **n_aliases; |
126 | int n_addrtype; |
127 | u32 n_net; |
128 | }; |
129 | |
130 | # if !defined(__i386__) |
131 | typedef long long __sanitizer_time_t; |
132 | # else |
133 | typedef long __sanitizer_time_t; |
134 | # endif |
135 | |
136 | struct __sanitizer_shmid_ds { |
137 | __sanitizer_ipc_perm shm_perm; |
138 | unsigned long shm_segsz; |
139 | unsigned int shm_lpid; |
140 | unsigned int shm_cpid; |
141 | int shm_nattch; |
142 | __sanitizer_time_t shm_atime; |
143 | __sanitizer_time_t shm_dtime; |
144 | __sanitizer_time_t shm_ctime; |
145 | }; |
146 | |
147 | extern unsigned struct_msqid_ds_sz; |
148 | extern unsigned struct_mq_attr_sz; |
149 | extern unsigned struct_timeb_sz; |
150 | extern unsigned struct_statvfs_sz; |
151 | |
152 | struct __sanitizer_iovec { |
153 | void *iov_base; |
154 | uptr iov_len; |
155 | }; |
156 | |
157 | struct __sanitizer_ifaddrs { |
158 | struct __sanitizer_ifaddrs *ifa_next; |
159 | char *ifa_name; |
160 | unsigned int ifa_flags; |
161 | void *ifa_addr; // (struct sockaddr *) |
162 | void *ifa_netmask; // (struct sockaddr *) |
163 | # undef ifa_dstaddr |
164 | void *ifa_dstaddr; // (struct sockaddr *) |
165 | void *ifa_data; |
166 | }; |
167 | |
168 | typedef unsigned __sanitizer_pthread_key_t; |
169 | |
170 | struct __sanitizer_passwd { |
171 | char *pw_name; |
172 | char *pw_passwd; |
173 | int pw_uid; |
174 | int pw_gid; |
175 | __sanitizer_time_t pw_change; |
176 | char *pw_class; |
177 | char *pw_gecos; |
178 | char *pw_dir; |
179 | char *pw_shell; |
180 | __sanitizer_time_t pw_expire; |
181 | int pw_fields; |
182 | }; |
183 | |
184 | struct __sanitizer_group { |
185 | char *gr_name; |
186 | char *gr_passwd; |
187 | int gr_gid; |
188 | char **gr_mem; |
189 | }; |
190 | |
191 | typedef long __sanitizer_suseconds_t; |
192 | |
193 | struct __sanitizer_timeval { |
194 | __sanitizer_time_t tv_sec; |
195 | __sanitizer_suseconds_t tv_usec; |
196 | }; |
197 | |
198 | struct __sanitizer_itimerval { |
199 | struct __sanitizer_timeval it_interval; |
200 | struct __sanitizer_timeval it_value; |
201 | }; |
202 | |
203 | struct __sanitizer_timeb { |
204 | __sanitizer_time_t time; |
205 | unsigned short millitm; |
206 | short timezone; |
207 | short dstflag; |
208 | }; |
209 | |
210 | struct __sanitizer_ether_addr { |
211 | u8 octet[6]; |
212 | }; |
213 | |
214 | struct __sanitizer_tm { |
215 | int tm_sec; |
216 | int tm_min; |
217 | int tm_hour; |
218 | int tm_mday; |
219 | int tm_mon; |
220 | int tm_year; |
221 | int tm_wday; |
222 | int tm_yday; |
223 | int tm_isdst; |
224 | long int tm_gmtoff; |
225 | const char *tm_zone; |
226 | }; |
227 | |
228 | struct __sanitizer_msghdr { |
229 | void *msg_name; |
230 | unsigned msg_namelen; |
231 | struct __sanitizer_iovec *msg_iov; |
232 | unsigned msg_iovlen; |
233 | void *msg_control; |
234 | unsigned msg_controllen; |
235 | int msg_flags; |
236 | }; |
237 | |
238 | struct __sanitizer_cmsghdr { |
239 | unsigned cmsg_len; |
240 | int cmsg_level; |
241 | int cmsg_type; |
242 | }; |
243 | |
244 | struct __sanitizer_dirent { |
245 | # if defined(__INO64) |
246 | unsigned long long d_fileno; |
247 | unsigned long long d_off; |
248 | # else |
249 | unsigned int d_fileno; |
250 | # endif |
251 | unsigned short d_reclen; |
252 | u8 d_type; |
253 | u8 d_pad0; |
254 | u16 d_namlen; |
255 | u16 d_pad1; |
256 | char d_name[256]; |
257 | }; |
258 | |
259 | u16 __sanitizer_dirsiz(const __sanitizer_dirent *dp); |
260 | |
261 | // 'clock_t' is 32 bits wide on x64 FreeBSD |
262 | typedef int __sanitizer_clock_t; |
263 | typedef int __sanitizer_clockid_t; |
264 | |
265 | # if defined(_LP64) || defined(__x86_64__) || defined(__powerpc__) || \ |
266 | defined(__mips__) |
267 | typedef unsigned __sanitizer___kernel_uid_t; |
268 | typedef unsigned __sanitizer___kernel_gid_t; |
269 | # else |
270 | typedef unsigned short __sanitizer___kernel_uid_t; |
271 | typedef unsigned short __sanitizer___kernel_gid_t; |
272 | # endif |
273 | typedef long long __sanitizer___kernel_off_t; |
274 | |
275 | # if defined(__powerpc__) || defined(__mips__) |
276 | typedef unsigned int __sanitizer___kernel_old_uid_t; |
277 | typedef unsigned int __sanitizer___kernel_old_gid_t; |
278 | # else |
279 | typedef unsigned short __sanitizer___kernel_old_uid_t; |
280 | typedef unsigned short __sanitizer___kernel_old_gid_t; |
281 | # endif |
282 | |
283 | typedef long long __sanitizer___kernel_loff_t; |
284 | typedef struct { |
285 | unsigned long fds_bits[1024 / (8 * sizeof(long))]; |
286 | } __sanitizer___kernel_fd_set; |
287 | |
288 | // This thing depends on the platform. We are only interested in the upper |
289 | // limit. Verified with a compiler assert in .cpp. |
290 | union __sanitizer_pthread_attr_t { |
291 | char size[128]; |
292 | void *align; |
293 | }; |
294 | |
295 | const unsigned old_sigset_t_sz = sizeof(unsigned long); |
296 | |
297 | struct __sanitizer_sigset_t { |
298 | // uint32_t * 4 |
299 | unsigned int __bits[4]; |
300 | }; |
301 | |
302 | typedef __sanitizer_sigset_t __sanitizer_kernel_sigset_t; |
303 | |
304 | union __sanitizer_sigval { |
305 | int sival_int; |
306 | void *sival_ptr; |
307 | }; |
308 | |
309 | struct __sanitizer_siginfo { |
310 | int si_signo; |
311 | int si_errno; |
312 | int si_code; |
313 | pid_t si_pid; |
314 | u32 si_uid; |
315 | int si_status; |
316 | void *si_addr; |
317 | union __sanitizer_sigval si_value; |
318 | # if SANITIZER_WORDSIZE == 64 |
319 | char data[40]; |
320 | # else |
321 | char data[32]; |
322 | # endif |
323 | }; |
324 | |
325 | typedef __sanitizer_siginfo __sanitizer_siginfo_t; |
326 | |
327 | using __sanitizer_sighandler_ptr = void (*)(int sig); |
328 | using __sanitizer_sigactionhandler_ptr = void (*)(int sig, |
329 | __sanitizer_siginfo *siginfo, |
330 | void *uctx); |
331 | |
332 | struct __sanitizer_sigaction { |
333 | union { |
334 | __sanitizer_sigactionhandler_ptr sigaction; |
335 | __sanitizer_sighandler_ptr handler; |
336 | }; |
337 | int sa_flags; |
338 | __sanitizer_sigset_t sa_mask; |
339 | }; |
340 | |
341 | struct __sanitizer_sem_t { |
342 | u32 data[4]; |
343 | }; |
344 | |
345 | extern const uptr sig_ign; |
346 | extern const uptr sig_dfl; |
347 | extern const uptr sig_err; |
348 | extern const uptr sa_siginfo; |
349 | |
350 | extern int af_inet; |
351 | extern int af_inet6; |
352 | uptr __sanitizer_in_addr_sz(int af); |
353 | |
354 | struct __sanitizer_dl_phdr_info { |
355 | uptr dlpi_addr; |
356 | const char *dlpi_name; |
357 | const void *dlpi_phdr; |
358 | short dlpi_phnum; |
359 | }; |
360 | |
361 | extern unsigned struct_ElfW_Phdr_sz; |
362 | |
363 | struct __sanitizer_addrinfo { |
364 | int ai_flags; |
365 | int ai_family; |
366 | int ai_socktype; |
367 | int ai_protocol; |
368 | unsigned ai_addrlen; |
369 | char *ai_canonname; |
370 | void *ai_addr; |
371 | struct __sanitizer_addrinfo *ai_next; |
372 | }; |
373 | |
374 | struct __sanitizer_hostent { |
375 | char *h_name; |
376 | char **h_aliases; |
377 | int h_addrtype; |
378 | int h_length; |
379 | char **h_addr_list; |
380 | }; |
381 | |
382 | struct __sanitizer_pollfd { |
383 | int fd; |
384 | short events; |
385 | short revents; |
386 | }; |
387 | |
388 | typedef unsigned __sanitizer_nfds_t; |
389 | |
390 | struct __sanitizer_glob_t { |
391 | uptr gl_pathc; |
392 | uptr gl_matchc; |
393 | uptr gl_offs; |
394 | int gl_flags; |
395 | char **gl_pathv; |
396 | int (*gl_errfunc)(const char *, int); |
397 | void (*gl_closedir)(void *dirp); |
398 | struct dirent *(*gl_readdir)(void *dirp); |
399 | void *(*gl_opendir)(const char *); |
400 | int (*gl_lstat)(const char *, void * /* struct stat* */); |
401 | int (*gl_stat)(const char *, void * /* struct stat* */); |
402 | }; |
403 | |
404 | extern int glob_nomatch; |
405 | extern int glob_altdirfunc; |
406 | extern const int wordexp_wrde_dooffs; |
407 | |
408 | extern unsigned path_max; |
409 | |
410 | extern int struct_ttyent_sz; |
411 | |
412 | struct __sanitizer_wordexp_t { |
413 | uptr we_wordc; |
414 | char **we_wordv; |
415 | uptr we_offs; |
416 | char *we_strings; |
417 | uptr we_nbytes; |
418 | }; |
419 | |
420 | typedef void __sanitizer_FILE; |
421 | |
422 | extern unsigned struct_shminfo_sz; |
423 | extern unsigned struct_shm_info_sz; |
424 | extern int shmctl_ipc_stat; |
425 | extern int shmctl_ipc_info; |
426 | extern int shmctl_shm_info; |
427 | extern int shmctl_shm_stat; |
428 | |
429 | extern unsigned struct_utmpx_sz; |
430 | |
431 | extern int map_fixed; |
432 | |
433 | // ioctl arguments |
434 | struct __sanitizer_ifconf { |
435 | int ifc_len; |
436 | union { |
437 | void *ifcu_req; |
438 | } ifc_ifcu; |
439 | }; |
440 | |
441 | struct __sanitizer__ttyent { |
442 | char *ty_name; |
443 | char *ty_getty; |
444 | char *ty_type; |
445 | int ty_status; |
446 | char *ty_window; |
447 | char *ty_comment; |
448 | char *ty_group; |
449 | }; |
450 | |
451 | // procctl reaper data for PROCCTL_REAPER flags |
452 | struct __sanitizer_procctl_reaper_status { |
453 | unsigned int rs_flags; |
454 | unsigned int rs_children; |
455 | unsigned int rs_descendants; |
456 | pid_t rs_reaper; |
457 | pid_t rs_pid; |
458 | unsigned int rs_pad0[15]; |
459 | }; |
460 | |
461 | struct __sanitizer_procctl_reaper_pidinfo { |
462 | pid_t pi_pid; |
463 | pid_t pi_subtree; |
464 | unsigned int pi_flags; |
465 | unsigned int pi_pad0[15]; |
466 | }; |
467 | |
468 | struct __sanitizer_procctl_reaper_pids { |
469 | unsigned int rp_count; |
470 | unsigned int rp_pad0[15]; |
471 | struct __sanitize_procctl_reapper_pidinfo *rp_pids; |
472 | }; |
473 | |
474 | struct __sanitizer_procctl_reaper_kill { |
475 | int rk_sig; |
476 | unsigned int rk_flags; |
477 | pid_t rk_subtree; |
478 | unsigned int rk_killed; |
479 | pid_t rk_fpid; |
480 | unsigned int rk_pad[15]; |
481 | }; |
482 | |
483 | # define IOC_NRBITS 8 |
484 | # define IOC_TYPEBITS 8 |
485 | # if defined(__powerpc__) || defined(__powerpc64__) || defined(__mips__) |
486 | # define IOC_SIZEBITS 13 |
487 | # define IOC_DIRBITS 3 |
488 | # define IOC_NONE 1U |
489 | # define IOC_WRITE 4U |
490 | # define IOC_READ 2U |
491 | # else |
492 | # define IOC_SIZEBITS 14 |
493 | # define IOC_DIRBITS 2 |
494 | # define IOC_NONE 0U |
495 | # define IOC_WRITE 1U |
496 | # define IOC_READ 2U |
497 | # endif |
498 | # define IOC_NRMASK ((1 << IOC_NRBITS) - 1) |
499 | # define IOC_TYPEMASK ((1 << IOC_TYPEBITS) - 1) |
500 | # define IOC_SIZEMASK ((1 << IOC_SIZEBITS) - 1) |
501 | # if defined(IOC_DIRMASK) |
502 | # undef IOC_DIRMASK |
503 | # endif |
504 | # define IOC_DIRMASK ((1 << IOC_DIRBITS) - 1) |
505 | # define IOC_NRSHIFT 0 |
506 | # define IOC_TYPESHIFT (IOC_NRSHIFT + IOC_NRBITS) |
507 | # define IOC_SIZESHIFT (IOC_TYPESHIFT + IOC_TYPEBITS) |
508 | # define IOC_DIRSHIFT (IOC_SIZESHIFT + IOC_SIZEBITS) |
509 | # define EVIOC_EV_MAX 0x1f |
510 | # define EVIOC_ABS_MAX 0x3f |
511 | |
512 | # define IOC_DIR(nr) (((nr) >> IOC_DIRSHIFT) & IOC_DIRMASK) |
513 | # define IOC_TYPE(nr) (((nr) >> IOC_TYPESHIFT) & IOC_TYPEMASK) |
514 | # define IOC_NR(nr) (((nr) >> IOC_NRSHIFT) & IOC_NRMASK) |
515 | # define IOC_SIZE(nr) (((nr) >> IOC_SIZESHIFT) & IOC_SIZEMASK) |
516 | |
517 | extern unsigned struct_ifreq_sz; |
518 | extern unsigned struct_termios_sz; |
519 | extern unsigned struct_winsize_sz; |
520 | |
521 | extern unsigned struct_copr_buffer_sz; |
522 | extern unsigned struct_copr_debug_buf_sz; |
523 | extern unsigned struct_copr_msg_sz; |
524 | extern unsigned struct_midi_info_sz; |
525 | extern unsigned struct_mtget_sz; |
526 | extern unsigned struct_mtop_sz; |
527 | extern unsigned struct_rtentry_sz; |
528 | extern unsigned struct_sbi_instrument_sz; |
529 | extern unsigned struct_seq_event_rec_sz; |
530 | extern unsigned struct_synth_info_sz; |
531 | extern unsigned struct_vt_mode_sz; |
532 | |
533 | extern const unsigned long __sanitizer_bufsiz; |
534 | extern unsigned struct_audio_buf_info_sz; |
535 | extern unsigned struct_ppp_stats_sz; |
536 | extern unsigned struct_sioc_sg_req_sz; |
537 | extern unsigned struct_sioc_vif_req_sz; |
538 | |
539 | extern unsigned struct_procctl_reaper_status_sz; |
540 | extern unsigned struct_procctl_reaper_pidinfo_sz; |
541 | extern unsigned struct_procctl_reaper_pids_sz; |
542 | extern unsigned struct_procctl_reaper_kill_sz; |
543 | |
544 | // ioctl request identifiers |
545 | |
546 | // A special value to mark ioctls that are not present on the target platform, |
547 | // when it can not be determined without including any system headers. |
548 | extern const unsigned IOCTL_NOT_PRESENT; |
549 | |
550 | extern unsigned IOCTL_FIOASYNC; |
551 | extern unsigned IOCTL_FIOCLEX; |
552 | extern unsigned IOCTL_FIOGETOWN; |
553 | extern unsigned IOCTL_FIONBIO; |
554 | extern unsigned IOCTL_FIONCLEX; |
555 | extern unsigned IOCTL_FIOSETOWN; |
556 | extern unsigned IOCTL_SIOCADDMULTI; |
557 | extern unsigned IOCTL_SIOCATMARK; |
558 | extern unsigned IOCTL_SIOCDELMULTI; |
559 | extern unsigned IOCTL_SIOCGIFADDR; |
560 | extern unsigned IOCTL_SIOCGIFBRDADDR; |
561 | extern unsigned IOCTL_SIOCGIFCONF; |
562 | extern unsigned IOCTL_SIOCGIFDSTADDR; |
563 | extern unsigned IOCTL_SIOCGIFFLAGS; |
564 | extern unsigned IOCTL_SIOCGIFMETRIC; |
565 | extern unsigned IOCTL_SIOCGIFMTU; |
566 | extern unsigned IOCTL_SIOCGIFNETMASK; |
567 | extern unsigned IOCTL_SIOCGPGRP; |
568 | extern unsigned IOCTL_SIOCSIFADDR; |
569 | extern unsigned IOCTL_SIOCSIFBRDADDR; |
570 | extern unsigned IOCTL_SIOCSIFDSTADDR; |
571 | extern unsigned IOCTL_SIOCSIFFLAGS; |
572 | extern unsigned IOCTL_SIOCSIFMETRIC; |
573 | extern unsigned IOCTL_SIOCSIFMTU; |
574 | extern unsigned IOCTL_SIOCSIFNETMASK; |
575 | extern unsigned IOCTL_SIOCSPGRP; |
576 | extern unsigned IOCTL_TIOCCONS; |
577 | extern unsigned IOCTL_TIOCEXCL; |
578 | extern unsigned IOCTL_TIOCGETD; |
579 | extern unsigned IOCTL_TIOCGPGRP; |
580 | extern unsigned IOCTL_TIOCGWINSZ; |
581 | extern unsigned IOCTL_TIOCMBIC; |
582 | extern unsigned IOCTL_TIOCMBIS; |
583 | extern unsigned IOCTL_TIOCMGET; |
584 | extern unsigned IOCTL_TIOCMSET; |
585 | extern unsigned IOCTL_TIOCNOTTY; |
586 | extern unsigned IOCTL_TIOCNXCL; |
587 | extern unsigned IOCTL_TIOCOUTQ; |
588 | extern unsigned IOCTL_TIOCPKT; |
589 | extern unsigned IOCTL_TIOCSCTTY; |
590 | extern unsigned IOCTL_TIOCSETD; |
591 | extern unsigned IOCTL_TIOCSPGRP; |
592 | extern unsigned IOCTL_TIOCSTI; |
593 | extern unsigned IOCTL_TIOCSWINSZ; |
594 | extern unsigned IOCTL_SIOCGETSGCNT; |
595 | extern unsigned IOCTL_SIOCGETVIFCNT; |
596 | extern unsigned IOCTL_MTIOCGET; |
597 | extern unsigned IOCTL_MTIOCTOP; |
598 | extern unsigned IOCTL_SIOCADDRT; |
599 | extern unsigned IOCTL_SIOCDELRT; |
600 | extern unsigned IOCTL_SNDCTL_DSP_GETBLKSIZE; |
601 | extern unsigned IOCTL_SNDCTL_DSP_GETFMTS; |
602 | extern unsigned IOCTL_SNDCTL_DSP_NONBLOCK; |
603 | extern unsigned IOCTL_SNDCTL_DSP_POST; |
604 | extern unsigned IOCTL_SNDCTL_DSP_RESET; |
605 | extern unsigned IOCTL_SNDCTL_DSP_SETFMT; |
606 | extern unsigned IOCTL_SNDCTL_DSP_SETFRAGMENT; |
607 | extern unsigned IOCTL_SNDCTL_DSP_SPEED; |
608 | extern unsigned IOCTL_SNDCTL_DSP_STEREO; |
609 | extern unsigned IOCTL_SNDCTL_DSP_SUBDIVIDE; |
610 | extern unsigned IOCTL_SNDCTL_DSP_SYNC; |
611 | extern unsigned IOCTL_SNDCTL_FM_4OP_ENABLE; |
612 | extern unsigned IOCTL_SNDCTL_FM_LOAD_INSTR; |
613 | extern unsigned IOCTL_SNDCTL_MIDI_INFO; |
614 | extern unsigned IOCTL_SNDCTL_MIDI_PRETIME; |
615 | extern unsigned IOCTL_SNDCTL_SEQ_CTRLRATE; |
616 | extern unsigned IOCTL_SNDCTL_SEQ_GETINCOUNT; |
617 | extern unsigned IOCTL_SNDCTL_SEQ_GETOUTCOUNT; |
618 | extern unsigned IOCTL_SNDCTL_SEQ_NRMIDIS; |
619 | extern unsigned IOCTL_SNDCTL_SEQ_NRSYNTHS; |
620 | extern unsigned IOCTL_SNDCTL_SEQ_OUTOFBAND; |
621 | extern unsigned IOCTL_SNDCTL_SEQ_PANIC; |
622 | extern unsigned IOCTL_SNDCTL_SEQ_PERCMODE; |
623 | extern unsigned IOCTL_SNDCTL_SEQ_RESET; |
624 | extern unsigned IOCTL_SNDCTL_SEQ_RESETSAMPLES; |
625 | extern unsigned IOCTL_SNDCTL_SEQ_SYNC; |
626 | extern unsigned IOCTL_SNDCTL_SEQ_TESTMIDI; |
627 | extern unsigned IOCTL_SNDCTL_SEQ_THRESHOLD; |
628 | extern unsigned IOCTL_SNDCTL_SYNTH_INFO; |
629 | extern unsigned IOCTL_SNDCTL_SYNTH_MEMAVL; |
630 | extern unsigned IOCTL_SNDCTL_TMR_CONTINUE; |
631 | extern unsigned IOCTL_SNDCTL_TMR_METRONOME; |
632 | extern unsigned IOCTL_SNDCTL_TMR_SELECT; |
633 | extern unsigned IOCTL_SNDCTL_TMR_SOURCE; |
634 | extern unsigned IOCTL_SNDCTL_TMR_START; |
635 | extern unsigned IOCTL_SNDCTL_TMR_STOP; |
636 | extern unsigned IOCTL_SNDCTL_TMR_TEMPO; |
637 | extern unsigned IOCTL_SNDCTL_TMR_TIMEBASE; |
638 | extern unsigned IOCTL_SOUND_MIXER_READ_ALTPCM; |
639 | extern unsigned IOCTL_SOUND_MIXER_READ_BASS; |
640 | extern unsigned IOCTL_SOUND_MIXER_READ_CAPS; |
641 | extern unsigned IOCTL_SOUND_MIXER_READ_CD; |
642 | extern unsigned IOCTL_SOUND_MIXER_READ_DEVMASK; |
643 | extern unsigned IOCTL_SOUND_MIXER_READ_ENHANCE; |
644 | extern unsigned IOCTL_SOUND_MIXER_READ_IGAIN; |
645 | extern unsigned IOCTL_SOUND_MIXER_READ_IMIX; |
646 | extern unsigned IOCTL_SOUND_MIXER_READ_LINE1; |
647 | extern unsigned IOCTL_SOUND_MIXER_READ_LINE2; |
648 | extern unsigned IOCTL_SOUND_MIXER_READ_LINE3; |
649 | extern unsigned IOCTL_SOUND_MIXER_READ_LINE; |
650 | extern unsigned IOCTL_SOUND_MIXER_READ_LOUD; |
651 | extern unsigned IOCTL_SOUND_MIXER_READ_MIC; |
652 | extern unsigned IOCTL_SOUND_MIXER_READ_MUTE; |
653 | extern unsigned IOCTL_SOUND_MIXER_READ_OGAIN; |
654 | extern unsigned IOCTL_SOUND_MIXER_READ_PCM; |
655 | extern unsigned IOCTL_SOUND_MIXER_READ_RECLEV; |
656 | extern unsigned IOCTL_SOUND_MIXER_READ_RECMASK; |
657 | extern unsigned IOCTL_SOUND_MIXER_READ_RECSRC; |
658 | extern unsigned IOCTL_SOUND_MIXER_READ_SPEAKER; |
659 | extern unsigned IOCTL_SOUND_MIXER_READ_STEREODEVS; |
660 | extern unsigned IOCTL_SOUND_MIXER_READ_SYNTH; |
661 | extern unsigned IOCTL_SOUND_MIXER_READ_TREBLE; |
662 | extern unsigned IOCTL_SOUND_MIXER_READ_VOLUME; |
663 | extern unsigned IOCTL_SOUND_MIXER_WRITE_ALTPCM; |
664 | extern unsigned IOCTL_SOUND_MIXER_WRITE_BASS; |
665 | extern unsigned IOCTL_SOUND_MIXER_WRITE_CD; |
666 | extern unsigned IOCTL_SOUND_MIXER_WRITE_ENHANCE; |
667 | extern unsigned IOCTL_SOUND_MIXER_WRITE_IGAIN; |
668 | extern unsigned IOCTL_SOUND_MIXER_WRITE_IMIX; |
669 | extern unsigned IOCTL_SOUND_MIXER_WRITE_LINE1; |
670 | extern unsigned IOCTL_SOUND_MIXER_WRITE_LINE2; |
671 | extern unsigned IOCTL_SOUND_MIXER_WRITE_LINE3; |
672 | extern unsigned IOCTL_SOUND_MIXER_WRITE_LINE; |
673 | extern unsigned IOCTL_SOUND_MIXER_WRITE_LOUD; |
674 | extern unsigned IOCTL_SOUND_MIXER_WRITE_MIC; |
675 | extern unsigned IOCTL_SOUND_MIXER_WRITE_MUTE; |
676 | extern unsigned IOCTL_SOUND_MIXER_WRITE_OGAIN; |
677 | extern unsigned IOCTL_SOUND_MIXER_WRITE_PCM; |
678 | extern unsigned IOCTL_SOUND_MIXER_WRITE_RECLEV; |
679 | extern unsigned IOCTL_SOUND_MIXER_WRITE_RECSRC; |
680 | extern unsigned IOCTL_SOUND_MIXER_WRITE_SPEAKER; |
681 | extern unsigned IOCTL_SOUND_MIXER_WRITE_SYNTH; |
682 | extern unsigned IOCTL_SOUND_MIXER_WRITE_TREBLE; |
683 | extern unsigned IOCTL_SOUND_MIXER_WRITE_VOLUME; |
684 | extern unsigned IOCTL_SOUND_PCM_READ_BITS; |
685 | extern unsigned IOCTL_SOUND_PCM_READ_CHANNELS; |
686 | extern unsigned IOCTL_SOUND_PCM_READ_FILTER; |
687 | extern unsigned IOCTL_SOUND_PCM_READ_RATE; |
688 | extern unsigned IOCTL_SOUND_PCM_WRITE_CHANNELS; |
689 | extern unsigned IOCTL_SOUND_PCM_WRITE_FILTER; |
690 | extern unsigned IOCTL_VT_ACTIVATE; |
691 | extern unsigned IOCTL_VT_GETMODE; |
692 | extern unsigned IOCTL_VT_OPENQRY; |
693 | extern unsigned IOCTL_VT_RELDISP; |
694 | extern unsigned IOCTL_VT_SETMODE; |
695 | extern unsigned IOCTL_VT_WAITACTIVE; |
696 | extern unsigned IOCTL_GIO_SCRNMAP; |
697 | extern unsigned IOCTL_KDDISABIO; |
698 | extern unsigned IOCTL_KDENABIO; |
699 | extern unsigned IOCTL_KDGETLED; |
700 | extern unsigned IOCTL_KDGETMODE; |
701 | extern unsigned IOCTL_KDGKBMODE; |
702 | extern unsigned IOCTL_KDGKBTYPE; |
703 | extern unsigned IOCTL_KDMKTONE; |
704 | extern unsigned IOCTL_KDSETLED; |
705 | extern unsigned IOCTL_KDSETMODE; |
706 | extern unsigned IOCTL_KDSKBMODE; |
707 | |
708 | extern const int si_SEGV_MAPERR; |
709 | extern const int si_SEGV_ACCERR; |
710 | |
711 | extern const unsigned MD5_CTX_sz; |
712 | extern const unsigned MD5_return_length; |
713 | |
714 | #define SHA2_EXTERN(LEN) \ |
715 | extern const unsigned SHA##LEN##_CTX_sz; \ |
716 | extern const unsigned SHA##LEN##_return_length; \ |
717 | extern const unsigned SHA##LEN##_block_length; \ |
718 | extern const unsigned SHA##LEN##_digest_length |
719 | |
720 | SHA2_EXTERN(224); |
721 | SHA2_EXTERN(256); |
722 | SHA2_EXTERN(384); |
723 | SHA2_EXTERN(512); |
724 | |
725 | #undef SHA2_EXTERN |
726 | |
727 | struct __sanitizer_cap_rights { |
728 | u64 cr_rights[2]; |
729 | }; |
730 | |
731 | typedef struct __sanitizer_cap_rights __sanitizer_cap_rights_t; |
732 | extern unsigned struct_cap_rights_sz; |
733 | |
734 | extern unsigned struct_fstab_sz; |
735 | extern unsigned struct_StringList_sz; |
736 | |
737 | struct __sanitizer_cpuset { |
738 | #if __FreeBSD_version >= 1400090 |
739 | long __bits[(1024 + (sizeof(long) * 8) - 1) / (sizeof(long) * 8)]; |
740 | #else |
741 | long __bits[(256 + (sizeof(long) * 8) - 1) / (sizeof(long) * 8)]; |
742 | #endif |
743 | }; |
744 | |
745 | typedef struct __sanitizer_cpuset __sanitizer_cpuset_t; |
746 | extern unsigned struct_cpuset_sz; |
747 | |
748 | typedef unsigned long long __sanitizer_eventfd_t; |
749 | } // namespace __sanitizer |
750 | |
751 | # define CHECK_TYPE_SIZE(TYPE) \ |
752 | COMPILER_CHECK(sizeof(__sanitizer_##TYPE) == sizeof(TYPE)) |
753 | |
754 | # define CHECK_SIZE_AND_OFFSET(CLASS, MEMBER) \ |
755 | COMPILER_CHECK(sizeof(((__sanitizer_##CLASS *)NULL)->MEMBER) == \ |
756 | sizeof(((CLASS *)NULL)->MEMBER)); \ |
757 | COMPILER_CHECK(offsetof(__sanitizer_##CLASS, MEMBER) == \ |
758 | offsetof(CLASS, MEMBER)) |
759 | |
760 | // For sigaction, which is a function and struct at the same time, |
761 | // and thus requires explicit "struct" in sizeof() expression. |
762 | # define CHECK_STRUCT_SIZE_AND_OFFSET(CLASS, MEMBER) \ |
763 | COMPILER_CHECK(sizeof(((struct __sanitizer_##CLASS *)NULL)->MEMBER) == \ |
764 | sizeof(((struct CLASS *)NULL)->MEMBER)); \ |
765 | COMPILER_CHECK(offsetof(struct __sanitizer_##CLASS, MEMBER) == \ |
766 | offsetof(struct CLASS, MEMBER)) |
767 | |
768 | # define SIGACTION_SYMNAME sigaction |
769 | |
770 | #endif |
771 | |
772 | #endif // SANITIZER_FREEBSD |
773 | |