1 //===-- sanitizer_platform_limits_posix.h ---------------------------------===//
3 // This file is distributed under the University of Illinois Open Source
4 // License. See LICENSE.TXT for details.
6 //===----------------------------------------------------------------------===//
8 // This file is a part of Sanitizer common code.
10 // Sizes and layouts of platform-specific POSIX data structures.
11 //===----------------------------------------------------------------------===//
13 #ifndef SANITIZER_PLATFORM_LIMITS_POSIX_H
14 #define SANITIZER_PLATFORM_LIMITS_POSIX_H
16 #include "sanitizer_internal_defs.h"
17 #include "sanitizer_platform.h"
19 namespace __sanitizer
{
20 extern unsigned struct_utsname_sz
;
21 extern unsigned struct_stat_sz
;
23 extern unsigned struct_stat64_sz
;
25 extern unsigned struct_rusage_sz
;
26 extern unsigned struct_passwd_sz
;
27 extern unsigned struct_group_sz
;
28 extern unsigned siginfo_t_sz
;
29 extern unsigned struct_itimerval_sz
;
30 extern unsigned pthread_t_sz
;
31 extern unsigned pthread_cond_t_sz
;
32 extern unsigned pid_t_sz
;
33 extern unsigned timeval_sz
;
34 extern unsigned uid_t_sz
;
35 extern unsigned mbstate_t_sz
;
36 extern unsigned struct_timezone_sz
;
37 extern unsigned struct_tms_sz
;
38 extern unsigned struct_itimerspec_sz
;
39 extern unsigned struct_sigevent_sz
;
40 extern unsigned struct_sched_param_sz
;
41 extern unsigned struct_statfs_sz
;
42 extern unsigned struct_statfs64_sz
;
44 #if !SANITIZER_ANDROID
45 extern unsigned ucontext_t_sz
;
46 #endif // !SANITIZER_ANDROID
50 #if defined(__x86_64__)
51 const unsigned struct___old_kernel_stat_sz
= 32;
52 const unsigned struct_kernel_stat_sz
= 144;
53 const unsigned struct_kernel_stat64_sz
= 0;
54 #elif defined(__i386__)
55 const unsigned struct___old_kernel_stat_sz
= 32;
56 const unsigned struct_kernel_stat_sz
= 64;
57 const unsigned struct_kernel_stat64_sz
= 96;
58 #elif defined(__arm__)
59 const unsigned struct___old_kernel_stat_sz
= 32;
60 const unsigned struct_kernel_stat_sz
= 64;
61 const unsigned struct_kernel_stat64_sz
= 104;
62 #elif defined(__powerpc__) && !defined(__powerpc64__)
63 const unsigned struct___old_kernel_stat_sz
= 32;
64 const unsigned struct_kernel_stat_sz
= 72;
65 const unsigned struct_kernel_stat64_sz
= 104;
66 #elif defined(__powerpc64__)
67 const unsigned struct___old_kernel_stat_sz
= 0;
68 const unsigned struct_kernel_stat_sz
= 144;
69 const unsigned struct_kernel_stat64_sz
= 104;
71 struct __sanitizer_perf_event_attr
{
74 // More fields that vary with the kernel version.
77 extern unsigned struct_utimbuf_sz
;
78 extern unsigned struct_new_utsname_sz
;
79 extern unsigned struct_old_utsname_sz
;
80 extern unsigned struct_oldold_utsname_sz
;
81 extern unsigned struct_msqid_ds_sz
;
82 extern unsigned struct_mq_attr_sz
;
83 extern unsigned struct_timex_sz
;
84 extern unsigned struct_ustat_sz
;
86 extern unsigned struct_rlimit_sz
;
87 extern unsigned struct_epoll_event_sz
;
88 extern unsigned struct_sysinfo_sz
;
89 extern unsigned struct_timespec_sz
;
90 extern unsigned __user_cap_header_struct_sz
;
91 extern unsigned __user_cap_data_struct_sz
;
92 const unsigned old_sigset_t_sz
= sizeof(unsigned long);
93 const unsigned struct_kexec_segment_sz
= 4 * sizeof(unsigned long);
95 struct __sanitizer_iocb
{
97 u32 aio_key_or_aio_reserved1
; // Simply crazy.
98 u32 aio_reserved1_or_aio_key
; // Luckily, we don't need these.
109 struct __sanitizer_io_event
{
116 const unsigned iocb_cmd_pread
= 0;
117 const unsigned iocb_cmd_pwrite
= 1;
118 const unsigned iocb_cmd_preadv
= 7;
119 const unsigned iocb_cmd_pwritev
= 8;
121 struct __sanitizer___sysctl_args
{
128 unsigned long ___unused
[4];
130 #endif // SANITIZER_LINUX
132 #if SANITIZER_LINUX && !SANITIZER_ANDROID
133 extern unsigned struct_rlimit64_sz
;
134 extern unsigned struct_statvfs_sz
;
135 extern unsigned struct_statvfs64_sz
;
137 struct __sanitizer_ipc_perm
{
150 unsigned short __pad1
;
151 unsigned short __seq
;
152 unsigned short __pad2
;
153 #if defined(__x86_64__) && !defined(_LP64)
157 unsigned long __unused1
;
158 unsigned long __unused2
;
163 struct __sanitizer_shmid_ds
{
164 __sanitizer_ipc_perm shm_perm
;
167 #elif !defined(__powerpc64__)
170 #if defined(__x86_64__) && !defined(_LP64)
193 #if defined(__x86_64__) && !defined(_LP64)
203 #endif // SANITIZER_LINUX && !SANITIZER_ANDROID
205 struct __sanitizer_iovec
{
211 typedef unsigned long __sanitizer_pthread_key_t
;
213 typedef unsigned __sanitizer_pthread_key_t
;
216 struct __sanitizer_ether_addr
{
220 struct __sanitizer_tm
{
235 struct __sanitizer_mntent
{
245 #if SANITIZER_ANDROID || SANITIZER_MAC
246 struct __sanitizer_msghdr
{
248 unsigned msg_namelen
;
249 struct __sanitizer_iovec
*msg_iov
;
252 unsigned msg_controllen
;
255 struct __sanitizer_cmsghdr
{
261 struct __sanitizer_msghdr
{
263 unsigned msg_namelen
;
264 struct __sanitizer_iovec
*msg_iov
;
270 struct __sanitizer_cmsghdr
{
278 struct __sanitizer_dirent
{
279 unsigned long long d_ino
;
280 unsigned long long d_seekoff
;
281 unsigned short d_reclen
;
282 // more fields that we don't care about
284 #elif SANITIZER_ANDROID || defined(__x86_64__)
285 struct __sanitizer_dirent
{
286 unsigned long long d_ino
;
287 unsigned long long d_off
;
288 unsigned short d_reclen
;
289 // more fields that we don't care about
292 struct __sanitizer_dirent
{
295 unsigned short d_reclen
;
296 // more fields that we don't care about
300 #if SANITIZER_LINUX && !SANITIZER_ANDROID
301 struct __sanitizer_dirent64
{
302 unsigned long long d_ino
;
303 unsigned long long d_off
;
304 unsigned short d_reclen
;
305 // more fields that we don't care about
309 #if defined(__x86_64__) && !defined(_LP64)
310 typedef long long __sanitizer_clock_t
;
312 typedef long __sanitizer_clock_t
;
316 #if defined(_LP64) || defined(__x86_64__) || defined(__powerpc__)
317 typedef unsigned __sanitizer___kernel_uid_t
;
318 typedef unsigned __sanitizer___kernel_gid_t
;
320 typedef unsigned short __sanitizer___kernel_uid_t
;
321 typedef unsigned short __sanitizer___kernel_gid_t
;
323 #if defined(__x86_64__) && !defined(_LP64)
324 typedef long long __sanitizer___kernel_off_t
;
326 typedef long __sanitizer___kernel_off_t
;
329 #if defined(__powerpc__)
330 typedef unsigned int __sanitizer___kernel_old_uid_t
;
331 typedef unsigned int __sanitizer___kernel_old_gid_t
;
333 typedef unsigned short __sanitizer___kernel_old_uid_t
;
334 typedef unsigned short __sanitizer___kernel_old_gid_t
;
337 typedef long long __sanitizer___kernel_loff_t
;
339 unsigned long fds_bits
[1024 / (8 * sizeof(long))];
340 } __sanitizer___kernel_fd_set
;
343 // This thing depends on the platform. We are only interested in the upper
344 // limit. Verified with a compiler assert in .cc.
345 const int pthread_attr_t_max_sz
= 128;
346 union __sanitizer_pthread_attr_t
{
347 char size
[pthread_attr_t_max_sz
]; // NOLINT
351 #if SANITIZER_ANDROID
352 typedef unsigned long __sanitizer_sigset_t
;
354 typedef unsigned __sanitizer_sigset_t
;
355 #elif SANITIZER_LINUX
356 struct __sanitizer_sigset_t
{
357 // The size is determined by looking at sizeof of real sigset_t on linux.
358 uptr val
[128 / sizeof(uptr
)];
362 struct __sanitizer_sigaction
{
364 void (*sa_handler
)(int sig
);
365 void (*sa_sigaction
)(int sig
, void *siginfo
, void *uctx
);
367 __sanitizer_sigset_t sa_mask
;
370 void (*sa_restorer
)();
374 struct __sanitizer_kernel_sigset_t
{
378 struct __sanitizer_kernel_sigaction_t
{
380 void (*sigaction
)(int signo
, void *info
, void *ctx
);
381 void (*handler
)(int signo
);
383 unsigned long sa_flags
;
384 void (*sa_restorer
)(void);
385 __sanitizer_kernel_sigset_t sa_mask
;
390 extern uptr sa_siginfo
;
398 uptr
__sanitizer_in_addr_sz(int af
);
401 struct __sanitizer_dl_phdr_info
{
403 const char *dlpi_name
;
404 const void *dlpi_phdr
;
409 struct __sanitizer_addrinfo
{
414 #if SANITIZER_ANDROID || SANITIZER_MAC
423 struct __sanitizer_addrinfo
*ai_next
;
426 struct __sanitizer_hostent
{
434 struct __sanitizer_pollfd
{
440 #if SANITIZER_ANDROID || SANITIZER_MAC
441 typedef unsigned __sanitizer_nfds_t
;
443 typedef unsigned long __sanitizer_nfds_t
;
446 #if SANITIZER_LINUX && !SANITIZER_ANDROID
447 struct __sanitizer_glob_t
{
453 void (*gl_closedir
)(void *dirp
);
454 void *(*gl_readdir
)(void *dirp
);
455 void *(*gl_opendir
)(const char *);
456 int (*gl_lstat
)(const char *, void *);
457 int (*gl_stat
)(const char *, void *);
460 extern int glob_nomatch
;
461 extern int glob_altdirfunc
;
464 extern unsigned path_max
;
466 struct __sanitizer_wordexp_t
{
472 #if SANITIZER_LINUX && !SANITIZER_ANDROID && \
473 (defined(__i386) || defined (__x86_64)) // NOLINT
474 extern unsigned struct_user_regs_struct_sz
;
475 extern unsigned struct_user_fpregs_struct_sz
;
476 extern unsigned struct_user_fpxregs_struct_sz
;
478 extern int ptrace_peektext
;
479 extern int ptrace_peekdata
;
480 extern int ptrace_peekuser
;
481 extern int ptrace_getregs
;
482 extern int ptrace_setregs
;
483 extern int ptrace_getfpregs
;
484 extern int ptrace_setfpregs
;
485 extern int ptrace_getfpxregs
;
486 extern int ptrace_setfpxregs
;
487 extern int ptrace_getsiginfo
;
488 extern int ptrace_setsiginfo
;
489 extern int ptrace_getregset
;
490 extern int ptrace_setregset
;
493 #if SANITIZER_LINUX && !SANITIZER_ANDROID
494 extern unsigned struct_shminfo_sz
;
495 extern unsigned struct_shm_info_sz
;
496 extern int shmctl_ipc_stat
;
497 extern int shmctl_ipc_info
;
498 extern int shmctl_shm_info
;
499 extern int shmctl_shm_stat
;
503 struct __sanitizer_ifconf
{
509 } __attribute__((packed
));
514 #define IOC_SIZE(nr) (((nr) >> 16) & 0x3fff)
516 extern unsigned struct_arpreq_sz
;
517 extern unsigned struct_ifreq_sz
;
518 extern unsigned struct_termios_sz
;
519 extern unsigned struct_winsize_sz
;
522 extern unsigned struct_cdrom_msf_sz
;
523 extern unsigned struct_cdrom_multisession_sz
;
524 extern unsigned struct_cdrom_read_audio_sz
;
525 extern unsigned struct_cdrom_subchnl_sz
;
526 extern unsigned struct_cdrom_ti_sz
;
527 extern unsigned struct_cdrom_tocentry_sz
;
528 extern unsigned struct_cdrom_tochdr_sz
;
529 extern unsigned struct_cdrom_volctrl_sz
;
530 extern unsigned struct_copr_buffer_sz
;
531 extern unsigned struct_copr_debug_buf_sz
;
532 extern unsigned struct_copr_msg_sz
;
533 extern unsigned struct_ff_effect_sz
;
534 extern unsigned struct_floppy_drive_params_sz
;
535 extern unsigned struct_floppy_drive_struct_sz
;
536 extern unsigned struct_floppy_fdc_state_sz
;
537 extern unsigned struct_floppy_max_errors_sz
;
538 extern unsigned struct_floppy_raw_cmd_sz
;
539 extern unsigned struct_floppy_struct_sz
;
540 extern unsigned struct_floppy_write_errors_sz
;
541 extern unsigned struct_format_descr_sz
;
542 extern unsigned struct_hd_driveid_sz
;
543 extern unsigned struct_hd_geometry_sz
;
544 extern unsigned struct_input_absinfo_sz
;
545 extern unsigned struct_input_id_sz
;
546 extern unsigned struct_midi_info_sz
;
547 extern unsigned struct_mtget_sz
;
548 extern unsigned struct_mtop_sz
;
549 extern unsigned struct_mtpos_sz
;
550 extern unsigned struct_rtentry_sz
;
551 extern unsigned struct_sbi_instrument_sz
;
552 extern unsigned struct_seq_event_rec_sz
;
553 extern unsigned struct_synth_info_sz
;
554 extern unsigned struct_termio_sz
;
555 extern unsigned struct_vt_consize_sz
;
556 extern unsigned struct_vt_mode_sz
;
557 extern unsigned struct_vt_sizes_sz
;
558 extern unsigned struct_vt_stat_sz
;
561 #if SANITIZER_LINUX && !SANITIZER_ANDROID
562 extern unsigned struct_audio_buf_info_sz
;
563 extern unsigned struct_ax25_parms_struct_sz
;
564 extern unsigned struct_cyclades_monitor_sz
;
565 extern unsigned struct_input_keymap_entry_sz
;
566 extern unsigned struct_ipx_config_data_sz
;
567 extern unsigned struct_kbdiacrs_sz
;
568 extern unsigned struct_kbentry_sz
;
569 extern unsigned struct_kbkeycode_sz
;
570 extern unsigned struct_kbsentry_sz
;
571 extern unsigned struct_mtconfiginfo_sz
;
572 extern unsigned struct_nr_parms_struct_sz
;
573 extern unsigned struct_ppp_stats_sz
;
574 extern unsigned struct_scc_modem_sz
;
575 extern unsigned struct_scc_stat_sz
;
576 extern unsigned struct_serial_multiport_struct_sz
;
577 extern unsigned struct_serial_struct_sz
;
578 extern unsigned struct_sockaddr_ax25_sz
;
579 extern unsigned struct_unimapdesc_sz
;
580 extern unsigned struct_unimapinit_sz
;
583 #if !SANITIZER_ANDROID && !SANITIZER_MAC
584 extern unsigned struct_sioc_sg_req_sz
;
585 extern unsigned struct_sioc_vif_req_sz
;
588 // ioctl request identifiers
590 // A special value to mark ioctls that are not present on the target platform,
591 // when it can not be determined without including any system headers.
592 extern unsigned IOCTL_NOT_PRESENT
;
594 extern unsigned IOCTL_FIOASYNC
;
595 extern unsigned IOCTL_FIOCLEX
;
596 extern unsigned IOCTL_FIOGETOWN
;
597 extern unsigned IOCTL_FIONBIO
;
598 extern unsigned IOCTL_FIONCLEX
;
599 extern unsigned IOCTL_FIOSETOWN
;
600 extern unsigned IOCTL_SIOCADDMULTI
;
601 extern unsigned IOCTL_SIOCATMARK
;
602 extern unsigned IOCTL_SIOCDELMULTI
;
603 extern unsigned IOCTL_SIOCGIFADDR
;
604 extern unsigned IOCTL_SIOCGIFBRDADDR
;
605 extern unsigned IOCTL_SIOCGIFCONF
;
606 extern unsigned IOCTL_SIOCGIFDSTADDR
;
607 extern unsigned IOCTL_SIOCGIFFLAGS
;
608 extern unsigned IOCTL_SIOCGIFMETRIC
;
609 extern unsigned IOCTL_SIOCGIFMTU
;
610 extern unsigned IOCTL_SIOCGIFNETMASK
;
611 extern unsigned IOCTL_SIOCGPGRP
;
612 extern unsigned IOCTL_SIOCSIFADDR
;
613 extern unsigned IOCTL_SIOCSIFBRDADDR
;
614 extern unsigned IOCTL_SIOCSIFDSTADDR
;
615 extern unsigned IOCTL_SIOCSIFFLAGS
;
616 extern unsigned IOCTL_SIOCSIFMETRIC
;
617 extern unsigned IOCTL_SIOCSIFMTU
;
618 extern unsigned IOCTL_SIOCSIFNETMASK
;
619 extern unsigned IOCTL_SIOCSPGRP
;
620 extern unsigned IOCTL_TIOCCONS
;
621 extern unsigned IOCTL_TIOCEXCL
;
622 extern unsigned IOCTL_TIOCGETD
;
623 extern unsigned IOCTL_TIOCGPGRP
;
624 extern unsigned IOCTL_TIOCGWINSZ
;
625 extern unsigned IOCTL_TIOCMBIC
;
626 extern unsigned IOCTL_TIOCMBIS
;
627 extern unsigned IOCTL_TIOCMGET
;
628 extern unsigned IOCTL_TIOCMSET
;
629 extern unsigned IOCTL_TIOCNOTTY
;
630 extern unsigned IOCTL_TIOCNXCL
;
631 extern unsigned IOCTL_TIOCOUTQ
;
632 extern unsigned IOCTL_TIOCPKT
;
633 extern unsigned IOCTL_TIOCSCTTY
;
634 extern unsigned IOCTL_TIOCSETD
;
635 extern unsigned IOCTL_TIOCSPGRP
;
636 extern unsigned IOCTL_TIOCSTI
;
637 extern unsigned IOCTL_TIOCSWINSZ
;
638 #if (SANITIZER_LINUX && !SANITIZER_ANDROID)
639 extern unsigned IOCTL_SIOCGETSGCNT
;
640 extern unsigned IOCTL_SIOCGETVIFCNT
;
643 extern unsigned IOCTL_EVIOCGABS
;
644 extern unsigned IOCTL_EVIOCGBIT
;
645 extern unsigned IOCTL_EVIOCGEFFECTS
;
646 extern unsigned IOCTL_EVIOCGID
;
647 extern unsigned IOCTL_EVIOCGKEY
;
648 extern unsigned IOCTL_EVIOCGKEYCODE
;
649 extern unsigned IOCTL_EVIOCGLED
;
650 extern unsigned IOCTL_EVIOCGNAME
;
651 extern unsigned IOCTL_EVIOCGPHYS
;
652 extern unsigned IOCTL_EVIOCGRAB
;
653 extern unsigned IOCTL_EVIOCGREP
;
654 extern unsigned IOCTL_EVIOCGSND
;
655 extern unsigned IOCTL_EVIOCGSW
;
656 extern unsigned IOCTL_EVIOCGUNIQ
;
657 extern unsigned IOCTL_EVIOCGVERSION
;
658 extern unsigned IOCTL_EVIOCRMFF
;
659 extern unsigned IOCTL_EVIOCSABS
;
660 extern unsigned IOCTL_EVIOCSFF
;
661 extern unsigned IOCTL_EVIOCSKEYCODE
;
662 extern unsigned IOCTL_EVIOCSREP
;
663 extern unsigned IOCTL_BLKFLSBUF
;
664 extern unsigned IOCTL_BLKGETSIZE
;
665 extern unsigned IOCTL_BLKRAGET
;
666 extern unsigned IOCTL_BLKRASET
;
667 extern unsigned IOCTL_BLKROGET
;
668 extern unsigned IOCTL_BLKROSET
;
669 extern unsigned IOCTL_BLKRRPART
;
670 extern unsigned IOCTL_CDROMAUDIOBUFSIZ
;
671 extern unsigned IOCTL_CDROMEJECT
;
672 extern unsigned IOCTL_CDROMEJECT_SW
;
673 extern unsigned IOCTL_CDROMMULTISESSION
;
674 extern unsigned IOCTL_CDROMPAUSE
;
675 extern unsigned IOCTL_CDROMPLAYMSF
;
676 extern unsigned IOCTL_CDROMPLAYTRKIND
;
677 extern unsigned IOCTL_CDROMREADAUDIO
;
678 extern unsigned IOCTL_CDROMREADCOOKED
;
679 extern unsigned IOCTL_CDROMREADMODE1
;
680 extern unsigned IOCTL_CDROMREADMODE2
;
681 extern unsigned IOCTL_CDROMREADRAW
;
682 extern unsigned IOCTL_CDROMREADTOCENTRY
;
683 extern unsigned IOCTL_CDROMREADTOCHDR
;
684 extern unsigned IOCTL_CDROMRESET
;
685 extern unsigned IOCTL_CDROMRESUME
;
686 extern unsigned IOCTL_CDROMSEEK
;
687 extern unsigned IOCTL_CDROMSTART
;
688 extern unsigned IOCTL_CDROMSTOP
;
689 extern unsigned IOCTL_CDROMSUBCHNL
;
690 extern unsigned IOCTL_CDROMVOLCTRL
;
691 extern unsigned IOCTL_CDROMVOLREAD
;
692 extern unsigned IOCTL_CDROM_GET_UPC
;
693 extern unsigned IOCTL_FDCLRPRM
;
694 extern unsigned IOCTL_FDDEFPRM
;
695 extern unsigned IOCTL_FDFLUSH
;
696 extern unsigned IOCTL_FDFMTBEG
;
697 extern unsigned IOCTL_FDFMTEND
;
698 extern unsigned IOCTL_FDFMTTRK
;
699 extern unsigned IOCTL_FDGETDRVPRM
;
700 extern unsigned IOCTL_FDGETDRVSTAT
;
701 extern unsigned IOCTL_FDGETDRVTYP
;
702 extern unsigned IOCTL_FDGETFDCSTAT
;
703 extern unsigned IOCTL_FDGETMAXERRS
;
704 extern unsigned IOCTL_FDGETPRM
;
705 extern unsigned IOCTL_FDMSGOFF
;
706 extern unsigned IOCTL_FDMSGON
;
707 extern unsigned IOCTL_FDPOLLDRVSTAT
;
708 extern unsigned IOCTL_FDRAWCMD
;
709 extern unsigned IOCTL_FDRESET
;
710 extern unsigned IOCTL_FDSETDRVPRM
;
711 extern unsigned IOCTL_FDSETEMSGTRESH
;
712 extern unsigned IOCTL_FDSETMAXERRS
;
713 extern unsigned IOCTL_FDSETPRM
;
714 extern unsigned IOCTL_FDTWADDLE
;
715 extern unsigned IOCTL_FDWERRORCLR
;
716 extern unsigned IOCTL_FDWERRORGET
;
717 extern unsigned IOCTL_HDIO_DRIVE_CMD
;
718 extern unsigned IOCTL_HDIO_GETGEO
;
719 extern unsigned IOCTL_HDIO_GET_32BIT
;
720 extern unsigned IOCTL_HDIO_GET_DMA
;
721 extern unsigned IOCTL_HDIO_GET_IDENTITY
;
722 extern unsigned IOCTL_HDIO_GET_KEEPSETTINGS
;
723 extern unsigned IOCTL_HDIO_GET_MULTCOUNT
;
724 extern unsigned IOCTL_HDIO_GET_NOWERR
;
725 extern unsigned IOCTL_HDIO_GET_UNMASKINTR
;
726 extern unsigned IOCTL_HDIO_SET_32BIT
;
727 extern unsigned IOCTL_HDIO_SET_DMA
;
728 extern unsigned IOCTL_HDIO_SET_KEEPSETTINGS
;
729 extern unsigned IOCTL_HDIO_SET_MULTCOUNT
;
730 extern unsigned IOCTL_HDIO_SET_NOWERR
;
731 extern unsigned IOCTL_HDIO_SET_UNMASKINTR
;
732 extern unsigned IOCTL_MTIOCGET
;
733 extern unsigned IOCTL_MTIOCPOS
;
734 extern unsigned IOCTL_MTIOCTOP
;
735 extern unsigned IOCTL_PPPIOCGASYNCMAP
;
736 extern unsigned IOCTL_PPPIOCGDEBUG
;
737 extern unsigned IOCTL_PPPIOCGFLAGS
;
738 extern unsigned IOCTL_PPPIOCGUNIT
;
739 extern unsigned IOCTL_PPPIOCGXASYNCMAP
;
740 extern unsigned IOCTL_PPPIOCSASYNCMAP
;
741 extern unsigned IOCTL_PPPIOCSDEBUG
;
742 extern unsigned IOCTL_PPPIOCSFLAGS
;
743 extern unsigned IOCTL_PPPIOCSMAXCID
;
744 extern unsigned IOCTL_PPPIOCSMRU
;
745 extern unsigned IOCTL_PPPIOCSXASYNCMAP
;
746 extern unsigned IOCTL_SIOCADDRT
;
747 extern unsigned IOCTL_SIOCDARP
;
748 extern unsigned IOCTL_SIOCDELRT
;
749 extern unsigned IOCTL_SIOCDRARP
;
750 extern unsigned IOCTL_SIOCGARP
;
751 extern unsigned IOCTL_SIOCGIFENCAP
;
752 extern unsigned IOCTL_SIOCGIFHWADDR
;
753 extern unsigned IOCTL_SIOCGIFMAP
;
754 extern unsigned IOCTL_SIOCGIFMEM
;
755 extern unsigned IOCTL_SIOCGIFNAME
;
756 extern unsigned IOCTL_SIOCGIFSLAVE
;
757 extern unsigned IOCTL_SIOCGRARP
;
758 extern unsigned IOCTL_SIOCGSTAMP
;
759 extern unsigned IOCTL_SIOCSARP
;
760 extern unsigned IOCTL_SIOCSIFENCAP
;
761 extern unsigned IOCTL_SIOCSIFHWADDR
;
762 extern unsigned IOCTL_SIOCSIFLINK
;
763 extern unsigned IOCTL_SIOCSIFMAP
;
764 extern unsigned IOCTL_SIOCSIFMEM
;
765 extern unsigned IOCTL_SIOCSIFSLAVE
;
766 extern unsigned IOCTL_SIOCSRARP
;
767 extern unsigned IOCTL_SNDCTL_COPR_HALT
;
768 extern unsigned IOCTL_SNDCTL_COPR_LOAD
;
769 extern unsigned IOCTL_SNDCTL_COPR_RCODE
;
770 extern unsigned IOCTL_SNDCTL_COPR_RCVMSG
;
771 extern unsigned IOCTL_SNDCTL_COPR_RDATA
;
772 extern unsigned IOCTL_SNDCTL_COPR_RESET
;
773 extern unsigned IOCTL_SNDCTL_COPR_RUN
;
774 extern unsigned IOCTL_SNDCTL_COPR_SENDMSG
;
775 extern unsigned IOCTL_SNDCTL_COPR_WCODE
;
776 extern unsigned IOCTL_SNDCTL_COPR_WDATA
;
777 extern unsigned IOCTL_SNDCTL_DSP_GETBLKSIZE
;
778 extern unsigned IOCTL_SNDCTL_DSP_GETFMTS
;
779 extern unsigned IOCTL_SNDCTL_DSP_NONBLOCK
;
780 extern unsigned IOCTL_SNDCTL_DSP_POST
;
781 extern unsigned IOCTL_SNDCTL_DSP_RESET
;
782 extern unsigned IOCTL_SNDCTL_DSP_SETFMT
;
783 extern unsigned IOCTL_SNDCTL_DSP_SETFRAGMENT
;
784 extern unsigned IOCTL_SNDCTL_DSP_SPEED
;
785 extern unsigned IOCTL_SNDCTL_DSP_STEREO
;
786 extern unsigned IOCTL_SNDCTL_DSP_SUBDIVIDE
;
787 extern unsigned IOCTL_SNDCTL_DSP_SYNC
;
788 extern unsigned IOCTL_SNDCTL_FM_4OP_ENABLE
;
789 extern unsigned IOCTL_SNDCTL_FM_LOAD_INSTR
;
790 extern unsigned IOCTL_SNDCTL_MIDI_INFO
;
791 extern unsigned IOCTL_SNDCTL_MIDI_PRETIME
;
792 extern unsigned IOCTL_SNDCTL_SEQ_CTRLRATE
;
793 extern unsigned IOCTL_SNDCTL_SEQ_GETINCOUNT
;
794 extern unsigned IOCTL_SNDCTL_SEQ_GETOUTCOUNT
;
795 extern unsigned IOCTL_SNDCTL_SEQ_NRMIDIS
;
796 extern unsigned IOCTL_SNDCTL_SEQ_NRSYNTHS
;
797 extern unsigned IOCTL_SNDCTL_SEQ_OUTOFBAND
;
798 extern unsigned IOCTL_SNDCTL_SEQ_PANIC
;
799 extern unsigned IOCTL_SNDCTL_SEQ_PERCMODE
;
800 extern unsigned IOCTL_SNDCTL_SEQ_RESET
;
801 extern unsigned IOCTL_SNDCTL_SEQ_RESETSAMPLES
;
802 extern unsigned IOCTL_SNDCTL_SEQ_SYNC
;
803 extern unsigned IOCTL_SNDCTL_SEQ_TESTMIDI
;
804 extern unsigned IOCTL_SNDCTL_SEQ_THRESHOLD
;
805 extern unsigned IOCTL_SNDCTL_SYNTH_INFO
;
806 extern unsigned IOCTL_SNDCTL_SYNTH_MEMAVL
;
807 extern unsigned IOCTL_SNDCTL_TMR_CONTINUE
;
808 extern unsigned IOCTL_SNDCTL_TMR_METRONOME
;
809 extern unsigned IOCTL_SNDCTL_TMR_SELECT
;
810 extern unsigned IOCTL_SNDCTL_TMR_SOURCE
;
811 extern unsigned IOCTL_SNDCTL_TMR_START
;
812 extern unsigned IOCTL_SNDCTL_TMR_STOP
;
813 extern unsigned IOCTL_SNDCTL_TMR_TEMPO
;
814 extern unsigned IOCTL_SNDCTL_TMR_TIMEBASE
;
815 extern unsigned IOCTL_SOUND_MIXER_READ_ALTPCM
;
816 extern unsigned IOCTL_SOUND_MIXER_READ_BASS
;
817 extern unsigned IOCTL_SOUND_MIXER_READ_CAPS
;
818 extern unsigned IOCTL_SOUND_MIXER_READ_CD
;
819 extern unsigned IOCTL_SOUND_MIXER_READ_DEVMASK
;
820 extern unsigned IOCTL_SOUND_MIXER_READ_ENHANCE
;
821 extern unsigned IOCTL_SOUND_MIXER_READ_IGAIN
;
822 extern unsigned IOCTL_SOUND_MIXER_READ_IMIX
;
823 extern unsigned IOCTL_SOUND_MIXER_READ_LINE1
;
824 extern unsigned IOCTL_SOUND_MIXER_READ_LINE2
;
825 extern unsigned IOCTL_SOUND_MIXER_READ_LINE3
;
826 extern unsigned IOCTL_SOUND_MIXER_READ_LINE
;
827 extern unsigned IOCTL_SOUND_MIXER_READ_LOUD
;
828 extern unsigned IOCTL_SOUND_MIXER_READ_MIC
;
829 extern unsigned IOCTL_SOUND_MIXER_READ_MUTE
;
830 extern unsigned IOCTL_SOUND_MIXER_READ_OGAIN
;
831 extern unsigned IOCTL_SOUND_MIXER_READ_PCM
;
832 extern unsigned IOCTL_SOUND_MIXER_READ_RECLEV
;
833 extern unsigned IOCTL_SOUND_MIXER_READ_RECMASK
;
834 extern unsigned IOCTL_SOUND_MIXER_READ_RECSRC
;
835 extern unsigned IOCTL_SOUND_MIXER_READ_SPEAKER
;
836 extern unsigned IOCTL_SOUND_MIXER_READ_STEREODEVS
;
837 extern unsigned IOCTL_SOUND_MIXER_READ_SYNTH
;
838 extern unsigned IOCTL_SOUND_MIXER_READ_TREBLE
;
839 extern unsigned IOCTL_SOUND_MIXER_READ_VOLUME
;
840 extern unsigned IOCTL_SOUND_MIXER_WRITE_ALTPCM
;
841 extern unsigned IOCTL_SOUND_MIXER_WRITE_BASS
;
842 extern unsigned IOCTL_SOUND_MIXER_WRITE_CD
;
843 extern unsigned IOCTL_SOUND_MIXER_WRITE_ENHANCE
;
844 extern unsigned IOCTL_SOUND_MIXER_WRITE_IGAIN
;
845 extern unsigned IOCTL_SOUND_MIXER_WRITE_IMIX
;
846 extern unsigned IOCTL_SOUND_MIXER_WRITE_LINE1
;
847 extern unsigned IOCTL_SOUND_MIXER_WRITE_LINE2
;
848 extern unsigned IOCTL_SOUND_MIXER_WRITE_LINE3
;
849 extern unsigned IOCTL_SOUND_MIXER_WRITE_LINE
;
850 extern unsigned IOCTL_SOUND_MIXER_WRITE_LOUD
;
851 extern unsigned IOCTL_SOUND_MIXER_WRITE_MIC
;
852 extern unsigned IOCTL_SOUND_MIXER_WRITE_MUTE
;
853 extern unsigned IOCTL_SOUND_MIXER_WRITE_OGAIN
;
854 extern unsigned IOCTL_SOUND_MIXER_WRITE_PCM
;
855 extern unsigned IOCTL_SOUND_MIXER_WRITE_RECLEV
;
856 extern unsigned IOCTL_SOUND_MIXER_WRITE_RECSRC
;
857 extern unsigned IOCTL_SOUND_MIXER_WRITE_SPEAKER
;
858 extern unsigned IOCTL_SOUND_MIXER_WRITE_SYNTH
;
859 extern unsigned IOCTL_SOUND_MIXER_WRITE_TREBLE
;
860 extern unsigned IOCTL_SOUND_MIXER_WRITE_VOLUME
;
861 extern unsigned IOCTL_SOUND_PCM_READ_BITS
;
862 extern unsigned IOCTL_SOUND_PCM_READ_CHANNELS
;
863 extern unsigned IOCTL_SOUND_PCM_READ_FILTER
;
864 extern unsigned IOCTL_SOUND_PCM_READ_RATE
;
865 extern unsigned IOCTL_SOUND_PCM_WRITE_CHANNELS
;
866 extern unsigned IOCTL_SOUND_PCM_WRITE_FILTER
;
867 extern unsigned IOCTL_TCFLSH
;
868 extern unsigned IOCTL_TCGETA
;
869 extern unsigned IOCTL_TCGETS
;
870 extern unsigned IOCTL_TCSBRK
;
871 extern unsigned IOCTL_TCSBRKP
;
872 extern unsigned IOCTL_TCSETA
;
873 extern unsigned IOCTL_TCSETAF
;
874 extern unsigned IOCTL_TCSETAW
;
875 extern unsigned IOCTL_TCSETS
;
876 extern unsigned IOCTL_TCSETSF
;
877 extern unsigned IOCTL_TCSETSW
;
878 extern unsigned IOCTL_TCXONC
;
879 extern unsigned IOCTL_TIOCGLCKTRMIOS
;
880 extern unsigned IOCTL_TIOCGSOFTCAR
;
881 extern unsigned IOCTL_TIOCINQ
;
882 extern unsigned IOCTL_TIOCLINUX
;
883 extern unsigned IOCTL_TIOCSERCONFIG
;
884 extern unsigned IOCTL_TIOCSERGETLSR
;
885 extern unsigned IOCTL_TIOCSERGWILD
;
886 extern unsigned IOCTL_TIOCSERSWILD
;
887 extern unsigned IOCTL_TIOCSLCKTRMIOS
;
888 extern unsigned IOCTL_TIOCSSOFTCAR
;
889 extern unsigned IOCTL_VT_ACTIVATE
;
890 extern unsigned IOCTL_VT_DISALLOCATE
;
891 extern unsigned IOCTL_VT_GETMODE
;
892 extern unsigned IOCTL_VT_GETSTATE
;
893 extern unsigned IOCTL_VT_OPENQRY
;
894 extern unsigned IOCTL_VT_RELDISP
;
895 extern unsigned IOCTL_VT_RESIZE
;
896 extern unsigned IOCTL_VT_RESIZEX
;
897 extern unsigned IOCTL_VT_SENDSIG
;
898 extern unsigned IOCTL_VT_SETMODE
;
899 extern unsigned IOCTL_VT_WAITACTIVE
;
901 #if SANITIZER_LINUX && !SANITIZER_ANDROID
902 extern unsigned IOCTL_CYGETDEFTHRESH
;
903 extern unsigned IOCTL_CYGETDEFTIMEOUT
;
904 extern unsigned IOCTL_CYGETMON
;
905 extern unsigned IOCTL_CYGETTHRESH
;
906 extern unsigned IOCTL_CYGETTIMEOUT
;
907 extern unsigned IOCTL_CYSETDEFTHRESH
;
908 extern unsigned IOCTL_CYSETDEFTIMEOUT
;
909 extern unsigned IOCTL_CYSETTHRESH
;
910 extern unsigned IOCTL_CYSETTIMEOUT
;
911 extern unsigned IOCTL_EQL_EMANCIPATE
;
912 extern unsigned IOCTL_EQL_ENSLAVE
;
913 extern unsigned IOCTL_EQL_GETMASTRCFG
;
914 extern unsigned IOCTL_EQL_GETSLAVECFG
;
915 extern unsigned IOCTL_EQL_SETMASTRCFG
;
916 extern unsigned IOCTL_EQL_SETSLAVECFG
;
917 extern unsigned IOCTL_EVIOCGKEYCODE_V2
;
918 extern unsigned IOCTL_EVIOCGPROP
;
919 extern unsigned IOCTL_EVIOCSKEYCODE_V2
;
920 extern unsigned IOCTL_FS_IOC_GETFLAGS
;
921 extern unsigned IOCTL_FS_IOC_GETVERSION
;
922 extern unsigned IOCTL_FS_IOC_SETFLAGS
;
923 extern unsigned IOCTL_FS_IOC_SETVERSION
;
924 extern unsigned IOCTL_GIO_CMAP
;
925 extern unsigned IOCTL_GIO_FONT
;
926 extern unsigned IOCTL_GIO_SCRNMAP
;
927 extern unsigned IOCTL_GIO_UNIMAP
;
928 extern unsigned IOCTL_GIO_UNISCRNMAP
;
929 extern unsigned IOCTL_KDADDIO
;
930 extern unsigned IOCTL_KDDELIO
;
931 extern unsigned IOCTL_KDDISABIO
;
932 extern unsigned IOCTL_KDENABIO
;
933 extern unsigned IOCTL_KDGETKEYCODE
;
934 extern unsigned IOCTL_KDGETLED
;
935 extern unsigned IOCTL_KDGETMODE
;
936 extern unsigned IOCTL_KDGKBDIACR
;
937 extern unsigned IOCTL_KDGKBENT
;
938 extern unsigned IOCTL_KDGKBLED
;
939 extern unsigned IOCTL_KDGKBMETA
;
940 extern unsigned IOCTL_KDGKBMODE
;
941 extern unsigned IOCTL_KDGKBSENT
;
942 extern unsigned IOCTL_KDGKBTYPE
;
943 extern unsigned IOCTL_KDMAPDISP
;
944 extern unsigned IOCTL_KDMKTONE
;
945 extern unsigned IOCTL_KDSETKEYCODE
;
946 extern unsigned IOCTL_KDSETLED
;
947 extern unsigned IOCTL_KDSETMODE
;
948 extern unsigned IOCTL_KDSIGACCEPT
;
949 extern unsigned IOCTL_KDSKBDIACR
;
950 extern unsigned IOCTL_KDSKBENT
;
951 extern unsigned IOCTL_KDSKBLED
;
952 extern unsigned IOCTL_KDSKBMETA
;
953 extern unsigned IOCTL_KDSKBMODE
;
954 extern unsigned IOCTL_KDSKBSENT
;
955 extern unsigned IOCTL_KDUNMAPDISP
;
956 extern unsigned IOCTL_KIOCSOUND
;
957 extern unsigned IOCTL_LPABORT
;
958 extern unsigned IOCTL_LPABORTOPEN
;
959 extern unsigned IOCTL_LPCAREFUL
;
960 extern unsigned IOCTL_LPCHAR
;
961 extern unsigned IOCTL_LPGETIRQ
;
962 extern unsigned IOCTL_LPGETSTATUS
;
963 extern unsigned IOCTL_LPRESET
;
964 extern unsigned IOCTL_LPSETIRQ
;
965 extern unsigned IOCTL_LPTIME
;
966 extern unsigned IOCTL_LPWAIT
;
967 extern unsigned IOCTL_MTIOCGETCONFIG
;
968 extern unsigned IOCTL_MTIOCSETCONFIG
;
969 extern unsigned IOCTL_PIO_CMAP
;
970 extern unsigned IOCTL_PIO_FONT
;
971 extern unsigned IOCTL_PIO_SCRNMAP
;
972 extern unsigned IOCTL_PIO_UNIMAP
;
973 extern unsigned IOCTL_PIO_UNIMAPCLR
;
974 extern unsigned IOCTL_PIO_UNISCRNMAP
;
975 extern unsigned IOCTL_SCSI_IOCTL_GET_IDLUN
;
976 extern unsigned IOCTL_SCSI_IOCTL_PROBE_HOST
;
977 extern unsigned IOCTL_SCSI_IOCTL_TAGGED_DISABLE
;
978 extern unsigned IOCTL_SCSI_IOCTL_TAGGED_ENABLE
;
979 extern unsigned IOCTL_SIOCAIPXITFCRT
;
980 extern unsigned IOCTL_SIOCAIPXPRISLT
;
981 extern unsigned IOCTL_SIOCAX25ADDUID
;
982 extern unsigned IOCTL_SIOCAX25DELUID
;
983 extern unsigned IOCTL_SIOCAX25GETPARMS
;
984 extern unsigned IOCTL_SIOCAX25GETUID
;
985 extern unsigned IOCTL_SIOCAX25NOUID
;
986 extern unsigned IOCTL_SIOCAX25SETPARMS
;
987 extern unsigned IOCTL_SIOCDEVPLIP
;
988 extern unsigned IOCTL_SIOCIPXCFGDATA
;
989 extern unsigned IOCTL_SIOCNRDECOBS
;
990 extern unsigned IOCTL_SIOCNRGETPARMS
;
991 extern unsigned IOCTL_SIOCNRRTCTL
;
992 extern unsigned IOCTL_SIOCNRSETPARMS
;
993 extern unsigned IOCTL_SNDCTL_DSP_GETISPACE
;
994 extern unsigned IOCTL_SNDCTL_DSP_GETOSPACE
;
995 extern unsigned IOCTL_TIOCGSERIAL
;
996 extern unsigned IOCTL_TIOCSERGETMULTI
;
997 extern unsigned IOCTL_TIOCSERSETMULTI
;
998 extern unsigned IOCTL_TIOCSSERIAL
;
1001 extern const int errno_EOWNERDEAD
;
1002 } // namespace __sanitizer
1004 #define CHECK_TYPE_SIZE(TYPE) \
1005 COMPILER_CHECK(sizeof(__sanitizer_##TYPE) == sizeof(TYPE))
1007 #define CHECK_SIZE_AND_OFFSET(CLASS, MEMBER) \
1008 COMPILER_CHECK(sizeof(((__sanitizer_##CLASS *) NULL)->MEMBER) == \
1009 sizeof(((CLASS *) NULL)->MEMBER)); \
1010 COMPILER_CHECK(offsetof(__sanitizer_##CLASS, MEMBER) == \
1011 offsetof(CLASS, MEMBER))
1013 // For sigaction, which is a function and struct at the same time,
1014 // and thus requires explicit "struct" in sizeof() expression.
1015 #define CHECK_STRUCT_SIZE_AND_OFFSET(CLASS, MEMBER) \
1016 COMPILER_CHECK(sizeof(((struct __sanitizer_##CLASS *) NULL)->MEMBER) == \
1017 sizeof(((struct CLASS *) NULL)->MEMBER)); \
1018 COMPILER_CHECK(offsetof(struct __sanitizer_##CLASS, MEMBER) == \
1019 offsetof(struct CLASS, MEMBER))