summaryrefslogtreecommitdiff
path: root/lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc')
-rwxr-xr-xlib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc801
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)