diff options
Diffstat (limited to 'lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc')
-rwxr-xr-x | lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc | 801 |
1 files changed, 394 insertions, 407 deletions
diff --git a/lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc b/lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc index e9d0529ba..6a9ec3c5c 100755 --- a/lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc +++ b/lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc @@ -22,6 +22,7 @@ struct ioctl_desc { CUSTOM } type : 2; unsigned size : 30; + const char* name; }; const unsigned ioctl_table_max = 500; @@ -34,424 +35,406 @@ static unsigned ioctl_table_size = 0; static void ioctl_table_fill() { #define _(rq, tp, sz) \ CHECK(ioctl_table_size < ioctl_table_max); \ - ioctl_table[ioctl_table_size].req = rq; \ + ioctl_table[ioctl_table_size].req = IOCTL_##rq; \ ioctl_table[ioctl_table_size].type = ioctl_desc::tp; \ ioctl_table[ioctl_table_size].size = sz; \ + ioctl_table[ioctl_table_size].name = #rq; \ ++ioctl_table_size; - _(0x0000540C, NONE, 0); // TIOCEXCL - _(0x0000540D, NONE, 0); // TIOCNXCL - _(0x0000540E, NONE, 0); // TIOCSCTTY - _(0x0000540F, WRITE, pid_t_sz); // TIOCGPGRP - _(0x00005410, READ, pid_t_sz); // TIOCSPGRP - _(0x00005411, WRITE, sizeof(int)); // TIOCOUTQ - _(0x00005412, READ, sizeof(char)); // TIOCSTI - _(0x00005413, WRITE, struct_winsize_sz); // TIOCGWINSZ - _(0x00005414, READ, struct_winsize_sz); // TIOCSWINSZ - _(0x00005415, WRITE, sizeof(int)); // TIOCMGET - _(0x00005416, READ, sizeof(int)); // TIOCMBIS - _(0x00005417, READ, sizeof(int)); // TIOCMBIC - _(0x00005418, READ, sizeof(int)); // TIOCMSET - _(0x0000541D, NONE, 0); // TIOCCONS - _(0x00005420, READ, sizeof(int)); // TIOCPKT - _(0x00005421, READ, sizeof(int)); // FIONBIO - _(0x00005422, NONE, 0); // TIOCNOTTY - _(0x00005423, READ, sizeof(int)); // TIOCSETD - _(0x00005424, WRITE, sizeof(int)); // TIOCGETD - _(0x00005450, NONE, 0); // FIONCLEX - _(0x00005451, NONE, 0); // FIOCLEX - _(0x00005452, READ, sizeof(int)); // FIOASYNC - _(0x00008901, READ, sizeof(int)); // FIOSETOWN - _(0x00008902, READ, sizeof(int)); // SIOCSPGRP - _(0x00008903, WRITE, sizeof(int)); // FIOGETOWN - _(0x00008904, WRITE, sizeof(int)); // SIOCGPGRP - _(0x00008905, WRITE, sizeof(int)); // SIOCATMAR - _(0x00008912, CUSTOM, 0); // SIOCGIFCONF - _(0x00008913, WRITE, struct_ifreq_sz); // SIOCGIFFLAGS - _(0x00008914, READ, struct_ifreq_sz); // SIOCSIFFLAGS - _(0x00008915, WRITE, struct_ifreq_sz); // SIOCGIFADDR - _(0x00008916, READ, struct_ifreq_sz); // SIOCSIFADDR - _(0x00008917, WRITE, struct_ifreq_sz); // SIOCGIFDSTADDR - _(0x00008918, READ, struct_ifreq_sz); // SIOCSIFDSTADDR - _(0x00008919, WRITE, struct_ifreq_sz); // SIOCGIFBRDADDR - _(0x0000891A, READ, struct_ifreq_sz); // SIOCSIFBRDADDR - _(0x0000891B, WRITE, struct_ifreq_sz); // SIOCGIFNETMASK - _(0x0000891C, READ, struct_ifreq_sz); // SIOCSIFNETMASK - _(0x0000891D, WRITE, struct_ifreq_sz); // SIOCGIFMETRIC - _(0x0000891E, READ, struct_ifreq_sz); // SIOCSIFMETRIC - _(0x00008921, WRITE, struct_ifreq_sz); // SIOCGIFMTU - _(0x00008922, READ, struct_ifreq_sz); // SIOCSIFMTU - _(0x00008931, READ, struct_ifreq_sz); // SIOCADDMULTI - _(0x00008932, READ, struct_ifreq_sz); // SIOCDELMULTI - _(0x00008940, NONE, 0); // SIOCADDRTOLD - _(0x00008941, NONE, 0); // SIOCDELRTOLD + _(FIOASYNC, READ, sizeof(int)); + _(FIOCLEX, NONE, 0); + _(FIOGETOWN, WRITE, sizeof(int)); + _(FIONBIO, READ, sizeof(int)); + _(FIONCLEX, NONE, 0); + _(FIOSETOWN, READ, sizeof(int)); + _(SIOCADDMULTI, READ, struct_ifreq_sz); + _(SIOCATMARK, WRITE, sizeof(int)); + _(SIOCDELMULTI, READ, struct_ifreq_sz); + _(SIOCGIFADDR, WRITE, struct_ifreq_sz); + _(SIOCGIFBRDADDR, WRITE, struct_ifreq_sz); + _(SIOCGIFCONF, CUSTOM, 0); + _(SIOCGIFDSTADDR, WRITE, struct_ifreq_sz); + _(SIOCGIFFLAGS, WRITE, struct_ifreq_sz); + _(SIOCGIFMETRIC, WRITE, struct_ifreq_sz); + _(SIOCGIFMTU, WRITE, struct_ifreq_sz); + _(SIOCGIFNETMASK, WRITE, struct_ifreq_sz); + _(SIOCGPGRP, WRITE, sizeof(int)); + _(SIOCSIFADDR, READ, struct_ifreq_sz); + _(SIOCSIFBRDADDR, READ, struct_ifreq_sz); + _(SIOCSIFDSTADDR, READ, struct_ifreq_sz); + _(SIOCSIFFLAGS, READ, struct_ifreq_sz); + _(SIOCSIFMETRIC, READ, struct_ifreq_sz); + _(SIOCSIFMTU, READ, struct_ifreq_sz); + _(SIOCSIFNETMASK, READ, struct_ifreq_sz); + _(SIOCSPGRP, READ, sizeof(int)); + _(TIOCCONS, NONE, 0); + _(TIOCEXCL, NONE, 0); + _(TIOCGETD, WRITE, sizeof(int)); + _(TIOCGPGRP, WRITE, pid_t_sz); + _(TIOCGWINSZ, WRITE, struct_winsize_sz); + _(TIOCMBIC, READ, sizeof(int)); + _(TIOCMBIS, READ, sizeof(int)); + _(TIOCMGET, WRITE, sizeof(int)); + _(TIOCMSET, READ, sizeof(int)); + _(TIOCNOTTY, NONE, 0); + _(TIOCNXCL, NONE, 0); + _(TIOCOUTQ, WRITE, sizeof(int)); + _(TIOCPKT, READ, sizeof(int)); + _(TIOCSCTTY, NONE, 0); + _(TIOCSETD, READ, sizeof(int)); + _(TIOCSPGRP, READ, pid_t_sz); + _(TIOCSTI, READ, sizeof(char)); + _(TIOCSWINSZ, READ, struct_winsize_sz); #if (SANITIZER_LINUX && !SANITIZER_ANDROID) || SANITIZER_MAC - _(0x000089E0, WRITE, struct_sioc_vif_req_sz); // SIOCGETVIFCNT - _(0x000089E1, WRITE, struct_sioc_sg_req_sz); // SIOCGETSGCNT + _(SIOCGETSGCNT, WRITE, struct_sioc_sg_req_sz); + _(SIOCGETVIFCNT, WRITE, struct_sioc_vif_req_sz); #endif #if SANITIZER_LINUX - _(0x00000000, NONE, 0); // FDCLRPRM - _(0x00000001, READ, struct_floppy_struct_sz); // FDSETPRM - _(0x00000002, READ, struct_floppy_struct_sz); // FDDEFPRM - _(0x00000003, WRITE, struct_floppy_struct_sz); // FDGETPRM - _(0x00000004, NONE, 0); // FDMSGON - _(0x00000005, NONE, 0); // FDMSGOFF - _(0x00000006, NONE, 0); // FDFMTBEG - _(0x00000007, READ, struct_format_descr_sz); // FDFMTTRK - _(0x00000008, NONE, 0); // FDFMTEND - _(0x0000000A, NONE, 0); // FDSETEMSGTRESH - _(0x0000000B, NONE, 0); // FDFLUSH - _(0x0000000C, READ, struct_floppy_max_errors_sz); // FDSETMAXERRS - _(0x0000000E, WRITE, struct_floppy_max_errors_sz); // FDGETMAXERRS - _(0x00000010, WRITE, 16); // FDGETDRVTYP - _(0x00000014, READ, struct_floppy_drive_params_sz); // FDSETDRVPRM - _(0x00000015, WRITE, struct_floppy_drive_params_sz); // FDGETDRVPRM - _(0x00000016, WRITE, struct_floppy_drive_struct_sz); // FDGETDRVSTAT - _(0x00000017, WRITE, struct_floppy_drive_struct_sz); // FDPOLLDRVSTAT - _(0x00000018, NONE, 0); // FDRESET - _(0x00000019, WRITE, struct_floppy_fdc_state_sz); // FDGETFDCSTAT - _(0x0000001B, NONE, 0); // FDWERRORCLR - _(0x0000001C, WRITE, struct_floppy_write_errors_sz); // FDWERRORGET - _(0x0000001E, WRITE, struct_floppy_raw_cmd_sz); // FDRAWCMD - _(0x00000028, NONE, 0); // FDTWADDLE - _(0x00000301, WRITE, struct_hd_geometry_sz); // HDIO_GETGEO - _(0x00000302, WRITE, sizeof(int)); // HDIO_GET_UNMASKINTR - _(0x00000304, WRITE, sizeof(int)); // HDIO_GET_MULTCOUNT - _(0x00000307, WRITE, struct_hd_driveid_sz); // HDIO_GET_IDENTITY - _(0x00000308, WRITE, sizeof(int)); // HDIO_GET_KEEPSETTINGS - _(0x00000309, WRITE, sizeof(int)); // HDIO_GET_CHIPSET - _(0x0000030A, WRITE, sizeof(int)); // HDIO_GET_NOWERR - _(0x0000030B, WRITE, sizeof(int)); // HDIO_GET_DMA - _(0x0000031F, WRITE, sizeof(int)); // HDIO_DRIVE_CMD - _(0x00000321, NONE, 0); // HDIO_SET_MULTCOUNT - _(0x00000322, NONE, 0); // HDIO_SET_UNMASKINTR - _(0x00000323, NONE, 0); // HDIO_SET_KEEPSETTINGS - _(0x00000324, NONE, 0); // HDIO_SET_CHIPSET - _(0x00000325, NONE, 0); // HDIO_SET_NOWERR - _(0x00000326, NONE, 0); // HDIO_SET_DMA - _(0x00000601, NONE, 0); // LPCHAR - _(0x00000602, NONE, 0); // LPTIME - _(0x00000604, NONE, 0); // LPABORT - _(0x00000605, NONE, 0); // LPSETIRQ - _(0x00000606, WRITE, sizeof(int)); // LPGETIRQ - _(0x00000608, NONE, 0); // LPWAIT - _(0x00000609, NONE, 0); // LPCAREFUL - _(0x0000060A, NONE, 0); // LPABORTOPEN - _(0x0000060B, WRITE, sizeof(int)); // LPGETSTATUS - _(0x0000060C, NONE, 0); // LPRESET - _(0x0000125D, READ, sizeof(int)); // BLKROSET - _(0x0000125E, WRITE, sizeof(int)); // BLKROGET - _(0x0000125F, NONE, 0); // BLKRRPART - _(0x00001260, WRITE, sizeof(uptr)); // BLKGETSIZE - _(0x00001261, NONE, 0); // BLKFLSBUF - _(0x00001262, NONE, 0); // BLKRASET - _(0x00001263, WRITE, sizeof(int)); // BLKRAGET - _(0x00004300, NONE, 0); // SNDCTL_COPR_RESET - _(0x00005000, NONE, 0); // SNDCTL_DSP_RESET - _(0x00005001, NONE, 0); // SNDCTL_DSP_SYNC - _(0x00005008, NONE, 0); // SNDCTL_DSP_POST - _(0x0000500E, NONE, 0); // SNDCTL_DSP_NONBLOCK - _(0x00005100, NONE, 0); // SNDCTL_SEQ_RESET - _(0x00005101, NONE, 0); // SNDCTL_SEQ_SYNC - _(0x00005111, NONE, 0); // SNDCTL_SEQ_PANIC - _(0x00005301, NONE, 0); // CDROMPAUSE - _(0x00005302, NONE, 0); // CDROMRESUME - _(0x00005303, READ, struct_cdrom_msf_sz); // CDROMPLAYMSF - _(0x00005304, READ, struct_cdrom_ti_sz); // CDROMPLAYTRKIND - _(0x00005305, WRITE, struct_cdrom_tochdr_sz); // CDROMREADTOCHDR - _(0x00005306, WRITE, struct_cdrom_tocentry_sz); // CDROMREADTOCENTRY - _(0x00005307, NONE, 0); // CDROMSTOP - _(0x00005308, NONE, 0); // CDROMSTART - _(0x00005309, NONE, 0); // CDROMEJECT - _(0x0000530A, READ, struct_cdrom_volctrl_sz); // CDROMVOLCTRL - _(0x0000530B, WRITE, struct_cdrom_subchnl_sz); // CDROMSUBCHNL - _(0x0000530C, READ, struct_cdrom_msf_sz); // CDROMREADMODE2 - _(0x0000530D, READ, struct_cdrom_msf_sz); // CDROMREADMODE1 - _(0x0000530E, READ, struct_cdrom_read_audio_sz); // CDROMREADAUDIO - _(0x0000530F, NONE, 0); // CDROMEJECT_SW - _(0x00005310, WRITE, struct_cdrom_multisession_sz); // CDROMMULTISESSION - _(0x00005311, WRITE, 8); // CDROM_GET_UPC - _(0x00005312, NONE, 0); // CDROMRESET - _(0x00005313, WRITE, struct_cdrom_volctrl_sz); // CDROMVOLREAD - _(0x00005314, READ, struct_cdrom_msf_sz); // CDROMREADRAW - _(0x00005315, READ, struct_cdrom_msf_sz); // CDROMREADCOOKED - _(0x00005316, READ, struct_cdrom_msf_sz); // CDROMSEEK - // Conflicting request id. - // _(0x00005382, NONE, 0); // CDROMAUDIOBUFSIZ - // _(0x00005382, WRITE, 2 * sizeof(int)); // SCSI_IOCTL_GET_IDLUN - _(0x00005383, NONE, 0); // SCSI_IOCTL_TAGGED_ENABLE - _(0x00005384, NONE, 0); // SCSI_IOCTL_TAGGED_DISABLE - _(0x00005385, READ, sizeof(int)); // SCSI_IOCTL_PROBE_HOST - _(0x00005401, WRITE, struct_termios_sz); // TCGETS - _(0x00005402, READ, struct_termios_sz); // TCSETS - _(0x00005403, READ, struct_termios_sz); // TCSETSW - _(0x00005404, READ, struct_termios_sz); // TCSETSF - _(0x00005405, WRITE, struct_termio_sz); // TCGETA - _(0x00005406, READ, struct_termio_sz); // TCSETA - _(0x00005407, READ, struct_termio_sz); // TCSETAW - _(0x00005408, READ, struct_termio_sz); // TCSETAF - _(0x00005409, NONE, 0); // TCSBRK - _(0x0000540A, NONE, 0); // TCXONC - _(0x0000540B, NONE, 0); // TCFLSH - // Conflicting request id. - // _(0x00005402, NONE, 0); // SNDCTL_TMR_START - // _(0x00005403, NONE, 0); // SNDCTL_TMR_STOP - // _(0x00005404, NONE, 0); // SNDCTL_TMR_CONTINUE - _(0x00005419, WRITE, sizeof(int)); // TIOCGSOFTCAR - _(0x0000541A, READ, sizeof(int)); // TIOCSSOFTCAR - _(0x0000541B, WRITE, sizeof(int)); // TIOCINQ - _(0x0000541C, READ, sizeof(char)); // TIOCLINUX - _(0x00005425, NONE, 0); // TCSBRKP - _(0x00005453, NONE, 0); // TIOCSERCONFIG - _(0x00005454, WRITE, sizeof(int)); // TIOCSERGWILD - _(0x00005455, READ, sizeof(int)); // TIOCSERSWILD - _(0x00005456, WRITE, struct_termios_sz); // TIOCGLCKTRMIOS - _(0x00005457, READ, struct_termios_sz); // TIOCSLCKTRMIOS - _(0x00005459, WRITE, sizeof(int)); // TIOCSERGETLSR - _(0x00005470, NONE, 0); // TIOCSCCINI - _(0x00005490, WRITE, sizeof(int)); // PPPIOCGFLAGS - _(0x00005491, READ, sizeof(int)); // PPPIOCSFLAGS - _(0x00005492, WRITE, sizeof(int)); // PPPIOCGASYNCMAP - _(0x00005493, READ, sizeof(int)); // PPPIOCSASYNCMAP - _(0x00005494, WRITE, sizeof(int)); // PPPIOCGUNIT - _(0x00005495, READ, sizeof(int)); // PPPIOCSINPSIG - _(0x00005497, READ, sizeof(int)); // PPPIOCSDEBUG - _(0x00005498, WRITE, sizeof(int)); // PPPIOCGDEBUG - _(0x0000549B, WRITE, sizeof(int) * 8); // PPPIOCGXASYNCMAP - _(0x0000549C, READ, sizeof(int) * 8); // PPPIOCSXASYNCMAP - _(0x0000549D, READ, sizeof(int)); // PPPIOCSMRU - _(0x0000549E, READ, sizeof(int)); // PPPIOCRASYNCMAP - _(0x0000549F, READ, sizeof(int)); // PPPIOCSMAXCID - _(0x00005600, WRITE, sizeof(int)); // VT_OPENQRY - _(0x00005601, WRITE, struct_vt_mode_sz); // VT_GETMODE - _(0x00005602, READ, struct_vt_mode_sz); // VT_SETMODE - _(0x00005603, WRITE, struct_vt_stat_sz); // VT_GETSTATE - _(0x00005604, NONE, 0); // VT_SENDSIG - _(0x00005605, NONE, 0); // VT_RELDISP - _(0x00005606, NONE, 0); // VT_ACTIVATE - _(0x00005607, NONE, 0); // VT_WAITACTIVE - _(0x00005608, NONE, 0); // VT_DISALLOCATE - _(0x00005609, READ, struct_vt_sizes_sz); // VT_RESIZE - _(0x0000560A, READ, struct_vt_consize_sz); // VT_RESIZEX - _(0x00007314, NONE, 0); // STL_BINTR - _(0x00007315, NONE, 0); // STL_BSTART - _(0x00007316, NONE, 0); // STL_BSTOP - _(0x00007317, NONE, 0); // STL_BRESET - _(0x00008906, WRITE, timeval_sz); // SIOCGSTAMP - _(0x0000890B, READ, struct_rtentry_sz); // SIOCADDRT - _(0x0000890C, READ, struct_rtentry_sz); // SIOCDELRT - _(0x00008910, NONE, 0); // SIOCGIFNAME - _(0x00008911, NONE, 0); // SIOCSIFLINK - _(0x0000891F, WRITE, struct_ifreq_sz); // SIOCGIFMEM - _(0x00008920, READ, struct_ifreq_sz); // SIOCSIFMEM - _(0x00008923, WRITE, struct_ifreq_sz); // OLD_SIOCGIFHWADDR - _(0x00008924, READ, struct_ifreq_sz); // SIOCSIFHWADDR - _(0x00008925, WRITE, sizeof(int)); // SIOCGIFENCAP - _(0x00008926, READ, sizeof(int)); // SIOCSIFENCAP - _(0x00008927, WRITE, struct_ifreq_sz); // SIOCGIFHWADDR - _(0x00008929, NONE, 0); // SIOCGIFSLAVE - _(0x00008930, NONE, 0); // SIOCSIFSLAVE - _(0x00008950, READ, struct_arpreq_sz); // SIOCDARP - _(0x00008951, WRITE, struct_arpreq_sz); // SIOCGARP - _(0x00008952, READ, struct_arpreq_sz); // SIOCSARP - _(0x00008960, READ, struct_arpreq_sz); // SIOCDRARP - _(0x00008961, WRITE, struct_arpreq_sz); // SIOCGRARP - _(0x00008962, READ, struct_arpreq_sz); // SIOCSRARP - _(0x00008970, WRITE, struct_ifreq_sz); // SIOCGIFMAP - _(0x00008971, READ, struct_ifreq_sz); // SIOCSIFMAP - _(0x000089F0, WRITE, struct_ifreq_sz); // SIOCDEVPLIP and EQL_ENSLAVE - _(0x000089F1, WRITE, struct_ifreq_sz); // EQL_EMANCIPATE - _(0x000089F2, WRITE, struct_ifreq_sz); // EQL_GETSLAVECFG - _(0x000089F3, WRITE, struct_ifreq_sz); // EQL_SETSLAVECFG - _(0x000089F4, WRITE, struct_ifreq_sz); // EQL_GETMASTRCFG - _(0x000089F5, WRITE, struct_ifreq_sz); // EQL_SETMASTRCFG - _(0x00009000, READ, sizeof(int)); // DDIOCSDBG - _(0x40045106, NONE, 0); // SNDCTL_SEQ_PERCMODE - _(0x40045108, READ, sizeof(int)); // SNDCTL_SEQ_TESTMIDI - _(0x40045109, READ, sizeof(int)); // SNDCTL_SEQ_RESETSAMPLES - _(0x4004510D, READ, sizeof(int)); // SNDCTL_SEQ_THRESHOLD - _(0x4004510F, READ, sizeof(int)); // SNDCTL_FM_4OP_ENABLE - _(0x40045407, READ, sizeof(int)); // SNDCTL_TMR_METRONOME - _(0x40045408, WRITE, sizeof(int)); // SNDCTL_TMR_SELECT - _(0x40046602, READ, sizeof(int)); // EXT2_IOC_SETFLAGS - _(0x40047602, READ, sizeof(int)); // EXT2_IOC_SETVERSION - _(0x40085112, READ, struct_seq_event_rec_sz); // SNDCTL_SEQ_OUTOFBAND - _(0x40086D01, READ, struct_mtop_sz); // MTIOCTOP - _(0x40144304, READ, struct_copr_debug_buf_sz); // SNDCTL_COPR_WDATA - _(0x40144305, READ, struct_copr_debug_buf_sz); // SNDCTL_COPR_WCODE - _(0x40285107, READ, struct_sbi_instrument_sz); // SNDCTL_FM_LOAD_INSTR - _(0x4FA44308, READ, struct_copr_msg_sz); // SNDCTL_COPR_SENDMSG - _(0x80027501, WRITE, uid_t_sz); // SMB_IOC_GETMOUNTUID - _(0x80044D00, WRITE, sizeof(int)); // SOUND_MIXER_READ_VOLUME - _(0x80044D01, WRITE, sizeof(int)); // SOUND_MIXER_READ_BASS - _(0x80044D02, WRITE, sizeof(int)); // SOUND_MIXER_READ_TREBLE - _(0x80044D03, WRITE, sizeof(int)); // SOUND_MIXER_READ_SYNTH - _(0x80044D04, WRITE, sizeof(int)); // SOUND_MIXER_READ_PCM - _(0x80044D05, WRITE, sizeof(int)); // SOUND_MIXER_READ_SPEAKER - _(0x80044D06, WRITE, sizeof(int)); // SOUND_MIXER_READ_LINE - _(0x80044D07, WRITE, sizeof(int)); // SOUND_MIXER_READ_MIC - _(0x80044D08, WRITE, sizeof(int)); // SOUND_MIXER_READ_CD - _(0x80044D09, WRITE, sizeof(int)); // SOUND_MIXER_READ_IMIX - _(0x80044D0A, WRITE, sizeof(int)); // SOUND_MIXER_READ_ALTPCM - _(0x80044D0B, WRITE, sizeof(int)); // SOUND_MIXER_READ_RECLEV - _(0x80044D0C, WRITE, sizeof(int)); // SOUND_MIXER_READ_IGAIN - _(0x80044D0D, WRITE, sizeof(int)); // SOUND_MIXER_READ_OGAIN - _(0x80044D0E, WRITE, sizeof(int)); // SOUND_MIXER_READ_LINE1 - _(0x80044D0F, WRITE, sizeof(int)); // SOUND_MIXER_READ_LINE2 - _(0x80044D10, WRITE, sizeof(int)); // SOUND_MIXER_READ_LINE3 - _(0x80044D1C, WRITE, sizeof(int)); // SOUND_MIXER_READ_MUTE - _(0x80044D1D, WRITE, sizeof(int)); // SOUND_MIXER_READ_ENHANCE - _(0x80044D1E, WRITE, sizeof(int)); // SOUND_MIXER_READ_LOUD - _(0x80044DFB, WRITE, sizeof(int)); // SOUND_MIXER_READ_STEREODEVS - _(0x80044DFC, WRITE, sizeof(int)); // SOUND_MIXER_READ_CAPS - _(0x80044DFD, WRITE, sizeof(int)); // SOUND_MIXER_READ_RECMASK - _(0x80044DFE, WRITE, sizeof(int)); // SOUND_MIXER_READ_DEVMASK - _(0x80044DFF, WRITE, sizeof(int)); // SOUND_MIXER_READ_RECSRC - _(0x80045002, WRITE, sizeof(int)); // SOUND_PCM_READ_RATE - _(0x80045005, WRITE, sizeof(int)); // SOUND_PCM_READ_BITS - _(0x80045006, WRITE, sizeof(int)); // SOUND_PCM_READ_CHANNELS - _(0x80045007, WRITE, sizeof(int)); // SOUND_PCM_READ_FILTER - _(0x8004500B, WRITE, sizeof(int)); // SNDCTL_DSP_GETFMTS - _(0x80045104, WRITE, sizeof(int)); // SNDCTL_SEQ_GETOUTCOUNT - _(0x80045105, WRITE, sizeof(int)); // SNDCTL_SEQ_GETINCOUNT - _(0x8004510A, WRITE, sizeof(int)); // SNDCTL_SEQ_NRSYNTHS - _(0x8004510B, WRITE, sizeof(int)); // SNDCTL_SEQ_NRMIDIS - _(0x80046601, WRITE, sizeof(int)); // EXT2_IOC_GETFLAGS - _(0x80046D03, WRITE, struct_mtpos_sz); // MTIOCPOS - _(0x80047601, WRITE, sizeof(int)); // EXT2_IOC_GETVERSION - _(0x801C6D02, WRITE, struct_mtget_sz); // MTIOCGET - _(0x8FA44309, WRITE, struct_copr_msg_sz); // SNDCTL_COPR_RCVMSG - _(0xC0044D00, WRITE, sizeof(int)); // SOUND_MIXER_WRITE_VOLUME - _(0xC0044D01, WRITE, sizeof(int)); // SOUND_MIXER_WRITE_BASS - _(0xC0044D02, WRITE, sizeof(int)); // SOUND_MIXER_WRITE_TREBLE - _(0xC0044D03, WRITE, sizeof(int)); // SOUND_MIXER_WRITE_SYNTH - _(0xC0044D04, WRITE, sizeof(int)); // SOUND_MIXER_WRITE_PCM - _(0xC0044D05, WRITE, sizeof(int)); // SOUND_MIXER_WRITE_SPEAKER - _(0xC0044D06, WRITE, sizeof(int)); // SOUND_MIXER_WRITE_LINE - _(0xC0044D07, WRITE, sizeof(int)); // SOUND_MIXER_WRITE_MIC - _(0xC0044D08, WRITE, sizeof(int)); // SOUND_MIXER_WRITE_CD - _(0xC0044D09, WRITE, sizeof(int)); // SOUND_MIXER_WRITE_IMIX - _(0xC0044D0A, WRITE, sizeof(int)); // SOUND_MIXER_WRITE_ALTPCM - _(0xC0044D0B, WRITE, sizeof(int)); // SOUND_MIXER_WRITE_RECLEV - _(0xC0044D0C, WRITE, sizeof(int)); // SOUND_MIXER_WRITE_IGAIN - _(0xC0044D0D, WRITE, sizeof(int)); // SOUND_MIXER_WRITE_OGAIN - _(0xC0044D0E, WRITE, sizeof(int)); // SOUND_MIXER_WRITE_LINE1 - _(0xC0044D0F, WRITE, sizeof(int)); // SOUND_MIXER_WRITE_LINE2 - _(0xC0044D10, WRITE, sizeof(int)); // SOUND_MIXER_WRITE_LINE3 - _(0xC0044D1C, WRITE, sizeof(int)); // SOUND_MIXER_WRITE_MUTE - _(0xC0044D1D, WRITE, sizeof(int)); // SOUND_MIXER_WRITE_ENHANCE - _(0xC0044D1E, WRITE, sizeof(int)); // SOUND_MIXER_WRITE_LOUD - _(0xC0044DFF, WRITE, sizeof(int)); // SOUND_MIXER_WRITE_RECSRC - _(0xC0045002, WRITE, sizeof(int)); // SNDCTL_DSP_SPEED - _(0xC0045003, WRITE, sizeof(int)); // SNDCTL_DSP_STEREO - _(0xC0045004, WRITE, sizeof(int)); // SNDCTL_DSP_GETBLKSIZE - _(0xC0045005, WRITE, sizeof(int)); // SNDCTL_DSP_SETFMT - _(0xC0045006, WRITE, sizeof(int)); // SOUND_PCM_WRITE_CHANNELS - _(0xC0045007, WRITE, sizeof(int)); // SOUND_PCM_WRITE_FILTER - _(0xC0045009, WRITE, sizeof(int)); // SNDCTL_DSP_SUBDIVIDE - _(0xC004500A, WRITE, sizeof(int)); // SNDCTL_DSP_SETFRAGMENT - _(0xC0045103, WRITE, sizeof(int)); // SNDCTL_SEQ_CTRLRATE - _(0xC004510E, WRITE, sizeof(int)); // SNDCTL_SYNTH_MEMAVL - _(0xC0045401, WRITE, sizeof(int)); // SNDCTL_TMR_TIMEBASE - _(0xC0045405, WRITE, sizeof(int)); // SNDCTL_TMR_TEMPO - _(0xC0045406, WRITE, sizeof(int)); // SNDCTL_TMR_SOURCE - _(0xC0046D00, WRITE, sizeof(int)); // SNDCTL_MIDI_PRETIME - _(0xC0046D01, READ, sizeof(int)); // SNDCTL_MIDI_MPUMODE - _(0xC0144302, WRITE, struct_copr_debug_buf_sz); // SNDCTL_COPR_RDATA - _(0xC0144303, WRITE, struct_copr_debug_buf_sz); // SNDCTL_COPR_RCODE - _(0xC0144306, WRITE, struct_copr_debug_buf_sz); // SNDCTL_COPR_RUN - _(0xC0144307, WRITE, struct_copr_debug_buf_sz); // SNDCTL_COPR_HALT - _(0xC074510C, WRITE, struct_midi_info_sz); // SNDCTL_MIDI_INFO - _(0xC08C5102, WRITE, struct_synth_info_sz); // SNDCTL_SYNTH_INFO - _(0xCFB04301, READ, struct_copr_buffer_sz); // SNDCTL_COPR_LOAD + // Conflicting request ids. + // _(CDROMAUDIOBUFSIZ, NONE, 0); + // _(SNDCTL_TMR_CONTINUE, NONE, 0); + // _(SNDCTL_TMR_START, NONE, 0); + // _(SNDCTL_TMR_STOP, NONE, 0); + // _(SOUND_MIXER_READ_LOUD, WRITE, sizeof(int)); // same as ...READ_ENHANCE + // _(SOUND_MIXER_READ_MUTE, WRITE, sizeof(int)); // same as ...READ_ENHANCE + // _(SOUND_MIXER_WRITE_LOUD, WRITE, sizeof(int)); // same as ...WRITE_ENHANCE + // _(SOUND_MIXER_WRITE_MUTE, WRITE, sizeof(int)); // same as ...WRITE_ENHANCE + _(BLKFLSBUF, NONE, 0); + _(BLKGETSIZE, WRITE, sizeof(uptr)); + _(BLKRAGET, WRITE, sizeof(int)); + _(BLKRASET, NONE, 0); + _(BLKROGET, WRITE, sizeof(int)); + _(BLKROSET, READ, sizeof(int)); + _(BLKRRPART, NONE, 0); + _(CDROMEJECT, NONE, 0); + _(CDROMEJECT_SW, NONE, 0); + _(CDROMMULTISESSION, WRITE, struct_cdrom_multisession_sz); + _(CDROMPAUSE, NONE, 0); + _(CDROMPLAYMSF, READ, struct_cdrom_msf_sz); + _(CDROMPLAYTRKIND, READ, struct_cdrom_ti_sz); + _(CDROMREADAUDIO, READ, struct_cdrom_read_audio_sz); + _(CDROMREADCOOKED, READ, struct_cdrom_msf_sz); + _(CDROMREADMODE1, READ, struct_cdrom_msf_sz); + _(CDROMREADMODE2, READ, struct_cdrom_msf_sz); + _(CDROMREADRAW, READ, struct_cdrom_msf_sz); + _(CDROMREADTOCENTRY, WRITE, struct_cdrom_tocentry_sz); + _(CDROMREADTOCHDR, WRITE, struct_cdrom_tochdr_sz); + _(CDROMRESET, NONE, 0); + _(CDROMRESUME, NONE, 0); + _(CDROMSEEK, READ, struct_cdrom_msf_sz); + _(CDROMSTART, NONE, 0); + _(CDROMSTOP, NONE, 0); + _(CDROMSUBCHNL, WRITE, struct_cdrom_subchnl_sz); + _(CDROMVOLCTRL, READ, struct_cdrom_volctrl_sz); + _(CDROMVOLREAD, WRITE, struct_cdrom_volctrl_sz); + _(CDROM_GET_UPC, WRITE, 8); + _(EXT2_IOC_GETFLAGS, WRITE, sizeof(int)); + _(EXT2_IOC_GETVERSION, WRITE, sizeof(int)); + _(EXT2_IOC_SETFLAGS, READ, sizeof(int)); + _(EXT2_IOC_SETVERSION, READ, sizeof(int)); + _(FDCLRPRM, NONE, 0); + _(FDDEFPRM, READ, struct_floppy_struct_sz); + _(FDFLUSH, NONE, 0); + _(FDFMTBEG, NONE, 0); + _(FDFMTEND, NONE, 0); + _(FDFMTTRK, READ, struct_format_descr_sz); + _(FDGETDRVPRM, WRITE, struct_floppy_drive_params_sz); + _(FDGETDRVSTAT, WRITE, struct_floppy_drive_struct_sz); + _(FDGETDRVTYP, WRITE, 16); + _(FDGETFDCSTAT, WRITE, struct_floppy_fdc_state_sz); + _(FDGETMAXERRS, WRITE, struct_floppy_max_errors_sz); + _(FDGETPRM, WRITE, struct_floppy_struct_sz); + _(FDMSGOFF, NONE, 0); + _(FDMSGON, NONE, 0); + _(FDPOLLDRVSTAT, WRITE, struct_floppy_drive_struct_sz); + _(FDRAWCMD, WRITE, struct_floppy_raw_cmd_sz); + _(FDRESET, NONE, 0); + _(FDSETDRVPRM, READ, struct_floppy_drive_params_sz); + _(FDSETEMSGTRESH, NONE, 0); + _(FDSETMAXERRS, READ, struct_floppy_max_errors_sz); + _(FDSETPRM, READ, struct_floppy_struct_sz); + _(FDTWADDLE, NONE, 0); + _(FDWERRORCLR, NONE, 0); + _(FDWERRORGET, WRITE, struct_floppy_write_errors_sz); + _(HDIO_DRIVE_CMD, WRITE, sizeof(int)); + _(HDIO_GETGEO, WRITE, struct_hd_geometry_sz); + _(HDIO_GET_32BIT, WRITE, sizeof(int)); + _(HDIO_GET_DMA, WRITE, sizeof(int)); + _(HDIO_GET_IDENTITY, WRITE, struct_hd_driveid_sz); + _(HDIO_GET_KEEPSETTINGS, WRITE, sizeof(int)); + _(HDIO_GET_MULTCOUNT, WRITE, sizeof(int)); + _(HDIO_GET_NOWERR, WRITE, sizeof(int)); + _(HDIO_GET_UNMASKINTR, WRITE, sizeof(int)); + _(HDIO_SET_32BIT, NONE, 0); + _(HDIO_SET_DMA, NONE, 0); + _(HDIO_SET_KEEPSETTINGS, NONE, 0); + _(HDIO_SET_MULTCOUNT, NONE, 0); + _(HDIO_SET_NOWERR, NONE, 0); + _(HDIO_SET_UNMASKINTR, NONE, 0); + _(MTIOCGET, WRITE, struct_mtget_sz); + _(MTIOCPOS, WRITE, struct_mtpos_sz); + _(MTIOCTOP, READ, struct_mtop_sz); + _(PPPIOCGASYNCMAP, WRITE, sizeof(int)); + _(PPPIOCGDEBUG, WRITE, sizeof(int)); + _(PPPIOCGFLAGS, WRITE, sizeof(int)); + _(PPPIOCGUNIT, WRITE, sizeof(int)); + _(PPPIOCGXASYNCMAP, WRITE, sizeof(int) * 8); + _(PPPIOCSASYNCMAP, READ, sizeof(int)); + _(PPPIOCSDEBUG, READ, sizeof(int)); + _(PPPIOCSFLAGS, READ, sizeof(int)); + _(PPPIOCSMAXCID, READ, sizeof(int)); + _(PPPIOCSMRU, READ, sizeof(int)); + _(PPPIOCSXASYNCMAP, READ, sizeof(int) * 8); + _(SIOCADDRT, READ, struct_rtentry_sz); + _(SIOCDARP, READ, struct_arpreq_sz); + _(SIOCDELRT, READ, struct_rtentry_sz); + _(SIOCDRARP, READ, struct_arpreq_sz); + _(SIOCGARP, WRITE, struct_arpreq_sz); + _(SIOCGIFENCAP, WRITE, sizeof(int)); + _(SIOCGIFHWADDR, WRITE, struct_ifreq_sz); + _(SIOCGIFMAP, WRITE, struct_ifreq_sz); + _(SIOCGIFMEM, WRITE, struct_ifreq_sz); + _(SIOCGIFNAME, NONE, 0); + _(SIOCGIFSLAVE, NONE, 0); + _(SIOCGRARP, WRITE, struct_arpreq_sz); + _(SIOCGSTAMP, WRITE, timeval_sz); + _(SIOCSARP, READ, struct_arpreq_sz); + _(SIOCSIFENCAP, READ, sizeof(int)); + _(SIOCSIFHWADDR, READ, struct_ifreq_sz); + _(SIOCSIFLINK, NONE, 0); + _(SIOCSIFMAP, READ, struct_ifreq_sz); + _(SIOCSIFMEM, READ, struct_ifreq_sz); + _(SIOCSIFSLAVE, NONE, 0); + _(SIOCSRARP, READ, struct_arpreq_sz); + _(SNDCTL_COPR_HALT, WRITE, struct_copr_debug_buf_sz); + _(SNDCTL_COPR_LOAD, READ, struct_copr_buffer_sz); + _(SNDCTL_COPR_RCODE, WRITE, struct_copr_debug_buf_sz); + _(SNDCTL_COPR_RCVMSG, WRITE, struct_copr_msg_sz); + _(SNDCTL_COPR_RDATA, WRITE, struct_copr_debug_buf_sz); + _(SNDCTL_COPR_RESET, NONE, 0); + _(SNDCTL_COPR_RUN, WRITE, struct_copr_debug_buf_sz); + _(SNDCTL_COPR_SENDMSG, READ, struct_copr_msg_sz); + _(SNDCTL_COPR_WCODE, READ, struct_copr_debug_buf_sz); + _(SNDCTL_COPR_WDATA, READ, struct_copr_debug_buf_sz); + _(SNDCTL_DSP_GETBLKSIZE, WRITE, sizeof(int)); + _(SNDCTL_DSP_GETFMTS, WRITE, sizeof(int)); + _(SNDCTL_DSP_NONBLOCK, NONE, 0); + _(SNDCTL_DSP_POST, NONE, 0); + _(SNDCTL_DSP_RESET, NONE, 0); + _(SNDCTL_DSP_SETFMT, WRITE, sizeof(int)); + _(SNDCTL_DSP_SETFRAGMENT, WRITE, sizeof(int)); + _(SNDCTL_DSP_SPEED, WRITE, sizeof(int)); + _(SNDCTL_DSP_STEREO, WRITE, sizeof(int)); + _(SNDCTL_DSP_SUBDIVIDE, WRITE, sizeof(int)); + _(SNDCTL_DSP_SYNC, NONE, 0); + _(SNDCTL_FM_4OP_ENABLE, READ, sizeof(int)); + _(SNDCTL_FM_LOAD_INSTR, READ, struct_sbi_instrument_sz); + _(SNDCTL_MIDI_INFO, WRITE, struct_midi_info_sz); + _(SNDCTL_MIDI_MPUMODE, READ, sizeof(int)); + _(SNDCTL_MIDI_PRETIME, WRITE, sizeof(int)); + _(SNDCTL_SEQ_CTRLRATE, WRITE, sizeof(int)); + _(SNDCTL_SEQ_GETINCOUNT, WRITE, sizeof(int)); + _(SNDCTL_SEQ_GETOUTCOUNT, WRITE, sizeof(int)); + _(SNDCTL_SEQ_NRMIDIS, WRITE, sizeof(int)); + _(SNDCTL_SEQ_NRSYNTHS, WRITE, sizeof(int)); + _(SNDCTL_SEQ_OUTOFBAND, READ, struct_seq_event_rec_sz); + _(SNDCTL_SEQ_PANIC, NONE, 0); + _(SNDCTL_SEQ_PERCMODE, NONE, 0); + _(SNDCTL_SEQ_RESET, NONE, 0); + _(SNDCTL_SEQ_RESETSAMPLES, READ, sizeof(int)); + _(SNDCTL_SEQ_SYNC, NONE, 0); + _(SNDCTL_SEQ_TESTMIDI, READ, sizeof(int)); + _(SNDCTL_SEQ_THRESHOLD, READ, sizeof(int)); + _(SNDCTL_SYNTH_INFO, WRITE, struct_synth_info_sz); + _(SNDCTL_SYNTH_MEMAVL, WRITE, sizeof(int)); + _(SNDCTL_TMR_METRONOME, READ, sizeof(int)); + _(SNDCTL_TMR_SELECT, WRITE, sizeof(int)); + _(SNDCTL_TMR_SOURCE, WRITE, sizeof(int)); + _(SNDCTL_TMR_TEMPO, WRITE, sizeof(int)); + _(SNDCTL_TMR_TIMEBASE, WRITE, sizeof(int)); + _(SOUND_MIXER_READ_ALTPCM, WRITE, sizeof(int)); + _(SOUND_MIXER_READ_BASS, WRITE, sizeof(int)); + _(SOUND_MIXER_READ_CAPS, WRITE, sizeof(int)); + _(SOUND_MIXER_READ_CD, WRITE, sizeof(int)); + _(SOUND_MIXER_READ_DEVMASK, WRITE, sizeof(int)); + _(SOUND_MIXER_READ_ENHANCE, WRITE, sizeof(int)); + _(SOUND_MIXER_READ_IGAIN, WRITE, sizeof(int)); + _(SOUND_MIXER_READ_IMIX, WRITE, sizeof(int)); + _(SOUND_MIXER_READ_LINE, WRITE, sizeof(int)); + _(SOUND_MIXER_READ_LINE1, WRITE, sizeof(int)); + _(SOUND_MIXER_READ_LINE2, WRITE, sizeof(int)); + _(SOUND_MIXER_READ_LINE3, WRITE, sizeof(int)); + _(SOUND_MIXER_READ_MIC, WRITE, sizeof(int)); + _(SOUND_MIXER_READ_OGAIN, WRITE, sizeof(int)); + _(SOUND_MIXER_READ_PCM, WRITE, sizeof(int)); + _(SOUND_MIXER_READ_RECLEV, WRITE, sizeof(int)); + _(SOUND_MIXER_READ_RECMASK, WRITE, sizeof(int)); + _(SOUND_MIXER_READ_RECSRC, WRITE, sizeof(int)); + _(SOUND_MIXER_READ_SPEAKER, WRITE, sizeof(int)); + _(SOUND_MIXER_READ_STEREODEVS, WRITE, sizeof(int)); + _(SOUND_MIXER_READ_SYNTH, WRITE, sizeof(int)); + _(SOUND_MIXER_READ_TREBLE, WRITE, sizeof(int)); + _(SOUND_MIXER_READ_VOLUME, WRITE, sizeof(int)); + _(SOUND_MIXER_WRITE_ALTPCM, WRITE, sizeof(int)); + _(SOUND_MIXER_WRITE_BASS, WRITE, sizeof(int)); + _(SOUND_MIXER_WRITE_CD, WRITE, sizeof(int)); + _(SOUND_MIXER_WRITE_ENHANCE, WRITE, sizeof(int)); + _(SOUND_MIXER_WRITE_IGAIN, WRITE, sizeof(int)); + _(SOUND_MIXER_WRITE_IMIX, WRITE, sizeof(int)); + _(SOUND_MIXER_WRITE_LINE, WRITE, sizeof(int)); + _(SOUND_MIXER_WRITE_LINE1, WRITE, sizeof(int)); + _(SOUND_MIXER_WRITE_LINE2, WRITE, sizeof(int)); + _(SOUND_MIXER_WRITE_LINE3, WRITE, sizeof(int)); + _(SOUND_MIXER_WRITE_MIC, WRITE, sizeof(int)); + _(SOUND_MIXER_WRITE_OGAIN, WRITE, sizeof(int)); + _(SOUND_MIXER_WRITE_PCM, WRITE, sizeof(int)); + _(SOUND_MIXER_WRITE_RECLEV, WRITE, sizeof(int)); + _(SOUND_MIXER_WRITE_RECSRC, WRITE, sizeof(int)); + _(SOUND_MIXER_WRITE_SPEAKER, WRITE, sizeof(int)); + _(SOUND_MIXER_WRITE_SYNTH, WRITE, sizeof(int)); + _(SOUND_MIXER_WRITE_TREBLE, WRITE, sizeof(int)); + _(SOUND_MIXER_WRITE_VOLUME, WRITE, sizeof(int)); + _(SOUND_PCM_READ_BITS, WRITE, sizeof(int)); + _(SOUND_PCM_READ_CHANNELS, WRITE, sizeof(int)); + _(SOUND_PCM_READ_FILTER, WRITE, sizeof(int)); + _(SOUND_PCM_READ_RATE, WRITE, sizeof(int)); + _(SOUND_PCM_WRITE_CHANNELS, WRITE, sizeof(int)); + _(SOUND_PCM_WRITE_FILTER, WRITE, sizeof(int)); + _(TCFLSH, NONE, 0); + _(TCGETA, WRITE, struct_termio_sz); + _(TCGETS, WRITE, struct_termios_sz); + _(TCSBRK, NONE, 0); + _(TCSBRKP, NONE, 0); + _(TCSETA, READ, struct_termio_sz); + _(TCSETAF, READ, struct_termio_sz); + _(TCSETAW, READ, struct_termio_sz); + _(TCSETS, READ, struct_termios_sz); + _(TCSETSF, READ, struct_termios_sz); + _(TCSETSW, READ, struct_termios_sz); + _(TCXONC, NONE, 0); + _(TIOCGLCKTRMIOS, WRITE, struct_termios_sz); + _(TIOCGSOFTCAR, WRITE, sizeof(int)); + _(TIOCINQ, WRITE, sizeof(int)); + _(TIOCLINUX, READ, sizeof(char)); + _(TIOCSERCONFIG, NONE, 0); + _(TIOCSERGETLSR, WRITE, sizeof(int)); + _(TIOCSERGWILD, WRITE, sizeof(int)); + _(TIOCSERSWILD, READ, sizeof(int)); + _(TIOCSLCKTRMIOS, READ, struct_termios_sz); + _(TIOCSSOFTCAR, READ, sizeof(int)); + _(VT_ACTIVATE, NONE, 0); + _(VT_DISALLOCATE, NONE, 0); + _(VT_GETMODE, WRITE, struct_vt_mode_sz); + _(VT_GETSTATE, WRITE, struct_vt_stat_sz); + _(VT_OPENQRY, WRITE, sizeof(int)); + _(VT_RELDISP, NONE, 0); + _(VT_RESIZE, READ, struct_vt_sizes_sz); + _(VT_RESIZEX, READ, struct_vt_consize_sz); + _(VT_SENDSIG, NONE, 0); + _(VT_SETMODE, READ, struct_vt_mode_sz); + _(VT_WAITACTIVE, NONE, 0); #endif #if SANITIZER_LINUX && !SANITIZER_ANDROID - _(0x00005499, WRITE, struct_ppp_stats_sz); // PPPIOCGSTAT - - _(0x00004B2F, NONE, 0); // KIOCSOUND - _(0x00004B30, NONE, 0); // KDMKTONE - _(0x00004B31, WRITE, 1); // KDGETLED - _(0x00004B32, NONE, 0); // KDSETLED - _(0x00004B33, WRITE, 1); // KDGKBTYPE - _(0x00004B34, NONE, 0); // KDADDIO - _(0x00004B35, NONE, 0); // KDDELIO - _(0x00004B36, NONE, 0); // KDENABIO - _(0x00004B37, NONE, 0); // KDDISABIO - _(0x00004B3A, NONE, 0); // KDSETMODE - _(0x00004B3B, WRITE, sizeof(int)); // KDGETMODE - _(0x00004B3C, NONE, 0); // KDMAPDISP - _(0x00004B3D, NONE, 0); // KDUNMAPDISP - _(0x00004B40, WRITE, e_tabsz); // GIO_SCRNMAP - _(0x00004B41, READ, e_tabsz); // PIO_SCRNMAP - _(0x00004B44, WRITE, sizeof(int)); // KDGKBMODE - _(0x00004B45, NONE, 0); // KDSKBMODE - _(0x00004B46, WRITE, struct_kbentry_sz); // KDGKBENT - _(0x00004B47, READ, struct_kbentry_sz); // KDSKBENT - _(0x00004B48, WRITE, struct_kbsentry_sz); // KDGKBSENT - _(0x00004B49, READ, struct_kbsentry_sz); // KDSKBSENT - _(0x00004B4A, WRITE, struct_kbdiacrs_sz); // KDGKBDIACR - _(0x00004B4B, READ, struct_kbdiacrs_sz); // KDSKBDIACR - _(0x00004B4C, WRITE, struct_kbkeycode_sz); // KDGETKEYCODE - _(0x00004B4D, READ, struct_kbkeycode_sz); // KDSETKEYCODE - _(0x00004B4E, NONE, 0); // KDSIGACCEPT - _(0x00004B60, WRITE, 8192); // GIO_FONT - _(0x00004B61, READ, 8192); // PIO_FONT - _(0x00004B62, WRITE, sizeof(int)); // KDGKBMETA - _(0x00004B63, NONE, 0); // KDSKBMETA - _(0x00004B64, WRITE, sizeof(int)); // KDGKBLED - _(0x00004B65, NONE, 0); // KDSKBLED - _(0x00004B66, WRITE, struct_unimapdesc_sz); // GIO_UNIMAP - _(0x00004B67, READ, struct_unimapdesc_sz); // PIO_UNIMAP - _(0x00004B68, READ, struct_unimapinit_sz); // PIO_UNIMAPCLR - _(0x00004B69, WRITE, sizeof(short) * e_tabsz); // GIO_UNISCRNMAP - _(0x00004B6A, READ, sizeof(short) * e_tabsz); // PIO_UNISCRNMAP - _(0x00004B70, WRITE, 48); // GIO_CMAP - _(0x00004B71, NONE, 0); // PIO_CMAP - - // Missing struct definition on Android. - _(0x0000541E, WRITE, struct_serial_struct_sz); // TIOCGSERIAL - _(0x0000541F, READ, struct_serial_struct_sz); // TIOCSSERIAL - _(0x0000545A, WRITE, struct_serial_multiport_struct_sz); // TIOCSERGETMULTI - _(0x0000545B, READ, struct_serial_multiport_struct_sz); // TIOCSERSETMULTI - _(0x00005471, READ, struct_scc_modem_sz); // TIOCCHANINI - _(0x00005474, WRITE, struct_scc_stat_sz); // TIOCSCCSTAT + // _(SIOCDEVPLIP, WRITE, struct_ifreq_sz); // the same as EQL_ENSLAVE + _(CYGETDEFTHRESH, WRITE, sizeof(int)); + _(CYGETDEFTIMEOUT, WRITE, sizeof(int)); + _(CYGETMON, WRITE, struct_cyclades_monitor_sz); + _(CYGETTHRESH, WRITE, sizeof(int)); + _(CYGETTIMEOUT, WRITE, sizeof(int)); + _(CYSETDEFTHRESH, NONE, 0); + _(CYSETDEFTIMEOUT, NONE, 0); + _(CYSETTHRESH, NONE, 0); + _(CYSETTIMEOUT, NONE, 0); + _(EQL_EMANCIPATE, WRITE, struct_ifreq_sz); + _(EQL_ENSLAVE, WRITE, struct_ifreq_sz); + _(EQL_GETMASTRCFG, WRITE, struct_ifreq_sz); + _(EQL_GETSLAVECFG, WRITE, struct_ifreq_sz); + _(EQL_SETMASTRCFG, WRITE, struct_ifreq_sz); + _(EQL_SETSLAVECFG, WRITE, struct_ifreq_sz); + _(GIO_CMAP, WRITE, 48); + _(GIO_FONT, WRITE, 8192); + _(GIO_SCRNMAP, WRITE, e_tabsz); + _(GIO_UNIMAP, WRITE, struct_unimapdesc_sz); + _(GIO_UNISCRNMAP, WRITE, sizeof(short) * e_tabsz); + _(KDADDIO, NONE, 0); + _(KDDELIO, NONE, 0); + _(KDDISABIO, NONE, 0); + _(KDENABIO, NONE, 0); + _(KDGETKEYCODE, WRITE, struct_kbkeycode_sz); + _(KDGETLED, WRITE, 1); + _(KDGETMODE, WRITE, sizeof(int)); + _(KDGKBDIACR, WRITE, struct_kbdiacrs_sz); + _(KDGKBENT, WRITE, struct_kbentry_sz); + _(KDGKBLED, WRITE, sizeof(int)); + _(KDGKBMETA, WRITE, sizeof(int)); + _(KDGKBMODE, WRITE, sizeof(int)); + _(KDGKBSENT, WRITE, struct_kbsentry_sz); + _(KDGKBTYPE, WRITE, 1); + _(KDMAPDISP, NONE, 0); + _(KDMKTONE, NONE, 0); + _(KDSETKEYCODE, READ, struct_kbkeycode_sz); + _(KDSETLED, NONE, 0); + _(KDSETMODE, NONE, 0); + _(KDSIGACCEPT, NONE, 0); + _(KDSKBDIACR, READ, struct_kbdiacrs_sz); + _(KDSKBENT, READ, struct_kbentry_sz); + _(KDSKBLED, NONE, 0); + _(KDSKBMETA, NONE, 0); + _(KDSKBMODE, NONE, 0); + _(KDSKBSENT, READ, struct_kbsentry_sz); + _(KDUNMAPDISP, NONE, 0); + _(KIOCSOUND, NONE, 0); + _(LPABORT, NONE, 0); + _(LPABORTOPEN, NONE, 0); + _(LPCAREFUL, NONE, 0); + _(LPCHAR, NONE, 0); + _(LPGETIRQ, WRITE, sizeof(int)); + _(LPGETSTATUS, WRITE, sizeof(int)); + _(LPRESET, NONE, 0); + _(LPSETIRQ, NONE, 0); + _(LPTIME, NONE, 0); + _(LPWAIT, NONE, 0); + _(MTIOCGETCONFIG, WRITE, struct_mtconfiginfo_sz); + _(MTIOCSETCONFIG, READ, struct_mtconfiginfo_sz); + _(PIO_CMAP, NONE, 0); + _(PIO_FONT, READ, 8192); + _(PIO_SCRNMAP, READ, e_tabsz); + _(PIO_UNIMAP, READ, struct_unimapdesc_sz); + _(PIO_UNIMAPCLR, READ, struct_unimapinit_sz); + _(PIO_UNISCRNMAP, READ, sizeof(short) * e_tabsz); + _(SCSI_IOCTL_PROBE_HOST, READ, sizeof(int)); + _(SCSI_IOCTL_TAGGED_DISABLE, NONE, 0); + _(SCSI_IOCTL_TAGGED_ENABLE, NONE, 0); + _(SNDCTL_DSP_GETISPACE, WRITE, struct_audio_buf_info_sz); + _(SNDCTL_DSP_GETOSPACE, WRITE, struct_audio_buf_info_sz); + _(STL_BINTR, NONE, 0); + _(STL_BRESET, NONE, 0); + _(STL_BSTART, NONE, 0); + _(STL_BSTOP, NONE, 0); + _(TIOCGSERIAL, WRITE, struct_serial_struct_sz); + _(TIOCSERGETMULTI, WRITE, struct_serial_multiport_struct_sz); + _(TIOCSERSETMULTI, READ, struct_serial_multiport_struct_sz); + _(TIOCSSERIAL, READ, struct_serial_struct_sz); // The following ioctl requests are shared between AX25, IPX, netrom and // mrouted. - // _(0x000089E0, READ, sizeof(char)); // SIOCAIPXITFCRT - // _(0x000089E0, READ, struct_sockaddr_ax25_sz); // SIOCAX25GETUID - // _(0x000089E0, WRITE, struct_nr_parms_struct_sz); // SIOCNRGETPARMS - // _(0x000089E1, READ, sizeof(char)); // SIOCAIPXPRISLT - // _(0x000089E1, READ, struct_nr_parms_struct_sz); // SIOCNRSETPARMS - // _(0x000089E1, READ, struct_sockaddr_ax25_sz); // SIOCAX25ADDUID - // _(0x000089E2, NONE, 0); // SIOCNRDECOBS - // _(0x000089E2, READ, struct_sockaddr_ax25_sz); // SIOCAX25DELUID - // _(0x000089E2, WRITE, struct_ipx_config_data_sz); // SIOCIPXCFGDATA - // _(0x000089E3, READ, sizeof(int)); // SIOCAX25NOUID - // _(0x000089E3, READ, sizeof(int)); // SIOCNRRTCTL - // _(0x000089E4, READ, sizeof(int)); // SIOCAX25DIGCTL - // _(0x000089E5, WRITE, struct_ax25_parms_struct_sz); // SIOCAX25GETPARMS - // _(0x000089E6, READ, struct_ax25_parms_struct_sz); // SIOCAX25SETPARMS - - _(0x00435901, WRITE, struct_cyclades_monitor_sz); // CYGETMON - _(0x00435902, WRITE, sizeof(int)); // CYGETTHRESH - _(0x00435903, NONE, 0); // CYSETTHRESH - _(0x00435904, WRITE, sizeof(int)); // CYGETDEFTHRESH - _(0x00435905, NONE, 0); // CYSETDEFTHRESH - _(0x00435906, WRITE, sizeof(int)); // CYGETTIMEOUT - _(0x00435907, NONE, 0); // CYSETTIMEOUT - _(0x00435908, WRITE, sizeof(int)); // CYGETDEFTIMEOUT - _(0x00435909, NONE, 0); // CYSETDEFTIMEOUT - - // Missing definition of mtconfiginfo - _(0x40206D05, READ, struct_mtconfiginfo_sz); // MTIOCSETCONFIG - _(0x80206D04, WRITE, struct_mtconfiginfo_sz); // MTIOCGETCONFIG - - _(0x800C500C, WRITE, struct_audio_buf_info_sz); // SNDCTL_DSP_GETOSPACE - _(0x800C500D, WRITE, struct_audio_buf_info_sz); // SNDCTL_DSP_GETISPACE + // _(SIOCAIPXITFCRT, READ, sizeof(char)); + // _(SIOCAX25GETUID, READ, struct_sockaddr_ax25_sz); + // _(SIOCNRGETPARMS, WRITE, struct_nr_parms_struct_sz); + // _(SIOCAIPXPRISLT, READ, sizeof(char)); + // _(SIOCNRSETPARMS, READ, struct_nr_parms_struct_sz); + // _(SIOCAX25ADDUID, READ, struct_sockaddr_ax25_sz); + // _(SIOCNRDECOBS, NONE, 0); + // _(SIOCAX25DELUID, READ, struct_sockaddr_ax25_sz); + // _(SIOCIPXCFGDATA, WRITE, struct_ipx_config_data_sz); + // _(SIOCAX25NOUID, READ, sizeof(int)); + // _(SIOCNRRTCTL, READ, sizeof(int)); + // _(SIOCAX25DIGCTL, READ, sizeof(int)); + // _(SIOCAX25GETPARMS, WRITE, struct_ax25_parms_struct_sz); + // _(SIOCAX25SETPARMS, READ, struct_ax25_parms_struct_sz); #endif #undef _ // FIXME: missing USB ioctls (EVIOxx...x). @@ -469,20 +452,24 @@ static void ioctl_init() { ioctl_table_fill(); InternalSort(&ioctl_table, ioctl_table_size, ioctl_desc_compare()); + bool bad = false; for (unsigned i = 0; i < ioctl_table_size - 1; ++i) { if (ioctl_table[i].req >= ioctl_table[i + 1].req) { - Printf("Duplicate or unsorted ioctl request id %x >= %x\n", - ioctl_table[i].req, ioctl_table[i + 1].req); - Die(); + Printf("Duplicate or unsorted ioctl request id %x >= %x (%s vs %s)\n", + ioctl_table[i].req, ioctl_table[i + 1].req, ioctl_table[i].name, + ioctl_table[i + 1].name); + bad = true; } } + if (bad) Die(); + ioctl_initialized = true; } static const ioctl_desc *ioctl_lookup(unsigned req) { int left = 0; - int right = sizeof(ioctl_table) / sizeof(*ioctl_table); + int right = ioctl_table_size; while (left < right) { int mid = (left + right) / 2; if (ioctl_table[mid].req < req) |