ioctl_list(2) список вызовов ioctl ядра Linux/i386

ОПИСАНИЕ

В данной странице представлен список ioctl вызовов ядра Linux/i386 версии 1.3.27. Он содержит 421 вызов из </usr/include/{asm,linux}/*.h>.Для каждого вызова указано числовое значение, имя и передаваемые аргументы.

Тип аргумента const struct foo * означает, что аргумент для ядра является входным. struct foo * означает, что аргумент для ядра является выходным. Если ядро использует аргумент как входной и выходной, то он помечается как // I-O.

Некоторые ioctl вызовы используют больше аргументов или возвращают больше значений, чем одна структура. Такие вызовы отмечаются как // MORE и документируются далее в отдельном параграфе.

Данный список очень неполон.

Структура ioctl

Значения команд ioctl являются 32-битными константами. В принципе, эти константы являются полностью случайными, но некоторые люди пытаются увидеть в них определённую закономерность.

В старом Linux, в основном, были 16-битные константы, в которых последний байт является серийным номером, а предшествующим байт(ами) указывался драйвер. Иногда использовался старший номер устройства: 0x03 для ioctl вызовов HDIO_*, 0x06 для ioctl вызовов LP*. Иногда использовались одна или несколько букв ASCII. Например, TCGETS имеет значение 0x00005401, с буквой 0x54 = 'T', указывающей на драйвер терминала и CYGETTIMEOUT имеет значение 0x00435906, с буквами 0x43 0x59 = 'C' 'Y', указывающими на драйвер cyclades.

Позже (0.98p5) в номер была встроена дополнительная информация. Появилось 2 бита направления (00: нет, 01: запись, 10: чтение, 11: чтение/запись), за которыми следовали 14 бит размера (указывают размер аргумента), за которыми следовали 8 бит типа (собирающих вызовы ioctl в группы по назначению или общему драйверу) и, наконец, 8 бит серийного номера.

Макросы, описывающие эту структуру, расположены в <asm/ioctl.h>, _IO(type,nr) и {_IOR,_IOW,_IOWR}(type,nr,size). Они используют sizeof(size), так что говорить о размере здесь является неправильным --- это третий параметр типа данных.

Заметим, что биты размера очень ненадёжны: во многих случаях они ошибочны или потому что ошибочный макрос использует sizeof(sizeof(struct)) или потому что таковы унаследованные значение.

Таким образом, мы видим, что новая структура имеет только недостатки: она не помогает в проверке, и приводит к различным значениям у разных архитектур.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

Хорошие ioctl вызовы возвращают 0 при успешном выполнении и -1 при ошибке, а любые выходные значения сохраняются в аргументе. Однако, некоторые ioctl вызовы возвращают выходное значение. Далее это пока никак не отмечено.

// Основная таблица.

// <include/asm-i386/socket.h>

0x00008901FIOSETOWNconst int *
0x00008902SIOCSPGRPconst int *
0x00008903FIOGETOWNint *
0x00008904SIOCGPGRPint *
0x00008905SIOCATMARint *
0x00008906SIOCGSTAMPtimeval *

// <include/asm-i386/termios.h>

0x00005401TCGETSstruct termios *
0x00005402TCSETSconst struct termios *
0x00005403TCSETSWconst struct termios *
0x00005404TCSETSFconst struct termios *
0x00005405TCGETAstruct termio *
0x00005406TCSETAconst struct termio *
0x00005407TCSETAWconst struct termio *
0x00005408TCSETAFconst struct termio *
0x00005409TCSBRKint
0x0000540ATCXONCint
0x0000540BTCFLSHint
0x0000540CTIOCEXCLvoid
0x0000540DTIOCNXCLvoid
0x0000540ETIOCSCTTYint
0x0000540FTIOCGPGRPpid_t *
0x00005410TIOCSPGRPconst pid_t *
0x00005411TIOCOUTQint *
0x00005412TIOCSTIconst char *
0x00005413TIOCGWINSZstruct winsize *
0x00005414TIOCSWINSZconst struct winsize *
0x00005415TIOCMGETint *
0x00005416TIOCMBISconst int *
0x00005417TIOCMBICconst int *
0x00005418TIOCMSETconst int *
0x00005419TIOCGSOFTCARint *
0x0000541ATIOCSSOFTCARconst int *
0x0000541BFIONREADint *
0x0000541BTIOCINQint *
0x0000541CTIOCLINUXconst char *// MORE
0x0000541DTIOCCONSvoid
0x0000541ETIOCGSERIALstruct serial_struct *
0x0000541FTIOCSSERIALconst struct serial_struct *
0x00005420TIOCPKTconst int *
0x00005421FIONBIOconst int *
0x00005422TIOCNOTTYvoid
0x00005423TIOCSETDconst int *
0x00005424TIOCGETDint *
0x00005425TCSBRKPint
0x00005426TIOCTTYGSTRUCTstruct tty_struct *
0x00005450FIONCLEXvoid
0x00005451FIOCLEXvoid
0x00005452FIOASYNCconst int *
0x00005453TIOCSERCONFIGvoid
0x00005454TIOCSERGWILDint *
0x00005455TIOCSERSWILDconst int *
0x00005456TIOCGLCKTRMIOSstruct termios *
0x00005457TIOCSLCKTRMIOSconst struct termios *
0x00005458TIOCSERGSTRUCTstruct async_struct *
0x00005459TIOCSERGETLSRint *
0x0000545ATIOCSERGETMULTIstruct serial_multiport_struct *
0x0000545BTIOCSERSETMULTIconst struct serial_multiport_struct *

// <include/linux/ax25.h>

0x000089E0SIOCAX25GETUIDconst struct sockaddr_ax25 *
0x000089E1SIOCAX25ADDUIDconst struct sockaddr_ax25 *
0x000089E2SIOCAX25DELUIDconst struct sockaddr_ax25 *
0x000089E3SIOCAX25NOUIDconst int *
0x000089E4SIOCAX25DIGCTLconst int *
0x000089E5SIOCAX25GETPARMSstruct ax25_parms_struct *// I-O
0x000089E6SIOCAX25SETPARMSconst struct ax25_parms_struct *

// <include/linux/cdk.h>

0x00007314STL_BINTRvoid
0x00007315STL_BSTARTvoid
0x00007316STL_BSTOPvoid
0x00007317STL_BRESETvoid

// <include/linux/cdrom.h>

0x00005301CDROMPAUSEvoid
0x00005302CDROMRESUMEvoid
0x00005303CDROMPLAYMSFconst struct cdrom_msf *
0x00005304CDROMPLAYTRKINDconst struct cdrom_ti *
0x00005305CDROMREADTOCHDRstruct cdrom_tochdr *
0x00005306CDROMREADTOCENTRYstruct cdrom_tocentry *// I-O
0x00005307CDROMSTOPvoid
0x00005308CDROMSTARTvoid
0x00005309CDROMEJECTvoid
0x0000530ACDROMVOLCTRLconst struct cdrom_volctrl *
0x0000530BCDROMSUBCHNLstruct cdrom_subchnl *// I-O
0x0000530CCDROMREADMODE2const struct cdrom_msf *// MORE
0x0000530DCDROMREADMODE1const struct cdrom_msf *// MORE
0x0000530ECDROMREADAUDIOconst struct cdrom_read_audio *// MORE
0x0000530FCDROMEJECT_SWint
0x00005310CDROMMULTISESSIONstruct cdrom_multisession *// I-O
0x00005311CDROM_GET_UPCstruct { char [8]; } *
0x00005312CDROMRESETvoid
0x00005313CDROMVOLREADstruct cdrom_volctrl *
0x00005314CDROMREADRAWconst struct cdrom_msf *// MORE
0x00005315CDROMREADCOOKEDconst struct cdrom_msf *// MORE
0x00005316CDROMSEEKconst struct cdrom_msf *

// <include/linux/cm206.h>

0x00002000CM206CTL_GET_STATint
0x00002001CM206CTL_GET_LAST_STATint

// <include/linux/cyclades.h>

0x00435901CYGETMONstruct cyclades_monitor *
0x00435902CYGETTHRESHint *
0x00435903CYSETTHRESHint
0x00435904CYGETDEFTHRESHint *
0x00435905CYSETDEFTHRESHint
0x00435906CYGETTIMEOUTint *
0x00435907CYSETTIMEOUTint
0x00435908CYGETDEFTIMEOUTint *
0x00435909CYSETDEFTIMEOUTint

// <include/linux/fd.h>

0x00000000FDCLRPRMvoid
0x00000001FDSETPRMconst struct floppy_struct *
0x00000002FDDEFPRMconst struct floppy_struct *
0x00000003FDGETPRMstruct floppy_struct *
0x00000004FDMSGONvoid
0x00000005FDMSGOFFvoid
0x00000006FDFMTBEGvoid
0x00000007FDFMTTRKconst struct format_descr *
0x00000008FDFMTENDvoid
0x0000000AFDSETEMSGTRESHint
0x0000000BFDFLUSHvoid
0x0000000CFDSETMAXERRSconst struct floppy_max_errors *
0x0000000EFDGETMAXERRSstruct floppy_max_errors *
0x00000010FDGETDRVTYPstruct { char [16]; } *
0x00000014FDSETDRVPRMconst struct floppy_drive_params *
0x00000015FDGETDRVPRMstruct floppy_drive_params *
0x00000016FDGETDRVSTATstruct floppy_drive_struct *
0x00000017FDPOLLDRVSTATstruct floppy_drive_struct *
0x00000018FDRESETint
0x00000019FDGETFDCSTATstruct floppy_fdc_state *
0x0000001BFDWERRORCLRvoid
0x0000001CFDWERRORGETstruct floppy_write_errors *
0x0000001EFDRAWCMDstruct floppy_raw_cmd *// MORE // I-O
0x00000028FDTWADDLEvoid

// <include/linux/fs.h>

0x0000125DBLKROSETconst int *
0x0000125EBLKROGETint *
0x0000125FBLKRRPARTvoid
0x00001260BLKGETSIZEunsigned long *
0x00001261BLKFLSBUFvoid
0x00001262BLKRASETint
0x00001263BLKRAGETint *
0x00000001FIBMAPint *// I-O
0x00000002FIGETBSZint *
0x80086601FS_IOC_GETFLAGSint *
0x40086602FS_IOC_SETFLAGSint *
0x80087601FS_IOC_GETVERSIONint *
0x40087602FS_IOC_SETVERSIONint *
0xC020660BFS_IOC_FIEMAPstruct fiemap *
0x40086602FS_IOC32_SETFLAGSint *
0x40086602FS_IOC32_SETFLAGSint *
0x80047601FS_IOC32_GETVERSIONint *
0x40047602FS_IOC32_SETVERSIONint *

// <include/linux/hdreg.h>

0x00000301HDIO_GETGEOstruct hd_geometry *
0x00000302HDIO_GET_UNMASKINTRint *
0x00000304HDIO_GET_MULTCOUNTint *
0x00000307HDIO_GET_IDENTITYstruct hd_driveid *
0x00000308HDIO_GET_KEEPSETTINGSint *
0x00000309HDIO_GET_CHIPSETint *
0x0000030AHDIO_GET_NOWERRint *
0x0000030BHDIO_GET_DMAint *
0x0000031FHDIO_DRIVE_CMDint *// I-O
0x00000321HDIO_SET_MULTCOUNTint
0x00000322HDIO_SET_UNMASKINTRint
0x00000323HDIO_SET_KEEPSETTINGSint
0x00000324HDIO_SET_CHIPSETint
0x00000325HDIO_SET_NOWERRint
0x00000326HDIO_SET_DMAint

// <include/linux/if_eql.h>

0x000089F0EQL_ENSLAVEstruct ifreq *// MORE // I-O
0x000089F1EQL_EMANCIPATEstruct ifreq *// MORE // I-O
0x000089F2EQL_GETSLAVECFGstruct ifreq *// MORE // I-O
0x000089F3EQL_SETSLAVECFGstruct ifreq *// MORE // I-O
0x000089F4EQL_GETMASTRCFGstruct ifreq *// MORE // I-O
0x000089F5EQL_SETMASTRCFGstruct ifreq *// MORE // I-O

// <include/linux/if_plip.h>

0x000089F0SIOCDEVPLIPstruct ifreq *// I-O

// <include/linux/if_ppp.h>

0x00005490PPPIOCGFLAGSint *
0x00005491PPPIOCSFLAGSconst int *
0x00005492PPPIOCGASYNCMAPint *
0x00005493PPPIOCSASYNCMAPconst int *
0x00005494PPPIOCGUNITint *
0x00005495PPPIOCSINPSIGconst int *
0x00005497PPPIOCSDEBUGconst int *
0x00005498PPPIOCGDEBUGint *
0x00005499PPPIOCGSTATstruct ppp_stats *
0x0000549APPPIOCGTIMEstruct ppp_ddinfo *
0x0000549BPPPIOCGXASYNCMAPstruct { int [8]; } *
0x0000549CPPPIOCSXASYNCMAPconst struct { int [8]; } *
0x0000549DPPPIOCSMRUconst int *
0x0000549EPPPIOCRASYNCMAPconst int *
0x0000549FPPPIOCSMAXCIDconst int *

// <include/linux/ipx.h>

0x000089E0SIOCAIPXITFCRTconst char *
0x000089E1SIOCAIPXPRISLTconst char *
0x000089E2SIOCIPXCFGDATAstruct ipx_config_data *

// <include/linux/kd.h>

0x00004B60GIO_FONTstruct { char [8192]; } *
0x00004B61PIO_FONTconst struct { char [8192]; } *
0x00004B6B  GIO_FONTX  struct console_font_desc *  // MORE // I-O
0x00004B6C  PIO_FONTX  const struct console_font_desc *  //MORE
0x00004B70GIO_CMAPstruct { char [48]; } *
0x00004B71PIO_CMAPconst struct { char [48]; }
0x00004B2FKIOCSOUNDint
0x00004B30KDMKTONEint
0x00004B31KDGETLEDchar *
0x00004B32KDSETLEDint
0x00004B33KDGKBTYPEchar *
0x00004B34KDADDIOint// MORE
0x00004B35KDDELIOint// MORE
0x00004B36KDENABIOvoid// MORE
0x00004B37KDDISABIOvoid// MORE
0x00004B3AKDSETMODEint
0x00004B3BKDGETMODEint *
0x00004B3CKDMAPDISPvoid// MORE
0x00004B3DKDUNMAPDISPvoid// MORE
0x00004B40GIO_SCRNMAPstruct { char [E_TABSZ]; } *
0x00004B41PIO_SCRNMAPconst struct { char [E_TABSZ]; } *
0x00004B69GIO_UNISCRNMAPstruct { short [E_TABSZ]; } *
0x00004B6APIO_UNISCRNMAPconst struct { short [E_TABSZ]; } *
0x00004B66GIO_UNIMAPstruct unimapdesc *// MORE // I-O
0x00004B67PIO_UNIMAPconst struct unimapdesc *// MORE
0x00004B68PIO_UNIMAPCLRconst struct unimapinit *
0x00004B44KDGKBMODEint *
0x00004B45KDSKBMODEint
0x00004B62KDGKBMETAint *
0x00004B63KDSKBMETAint
0x00004B64KDGKBLEDint *
0x00004B65KDSKBLEDint
0x00004B46KDGKBENTstruct kbentry *// I-O
0x00004B47KDSKBENTconst struct kbentry *
0x00004B48KDGKBSENTstruct kbsentry *// I-O
0x00004B49KDSKBSENTconst struct kbsentry *
0x00004B4AKDGKBDIACRstruct kbdiacrs *
0x00004B4BKDSKBDIACRconst struct kbdiacrs *
0x00004B4CKDGETKEYCODEstruct kbkeycode *// I-O
0x00004B4DKDSETKEYCODEconst struct kbkeycode *
0x00004B4EKDSIGACCEPTint

// <include/linux/lp.h>

0x00000601LPCHARint
0x00000602LPTIMEint
0x00000604LPABORTint
0x00000605LPSETIRQint
0x00000606LPGETIRQint *
0x00000608LPWAITint
0x00000609LPCAREFULint
0x0000060ALPABORTOPENint
0x0000060BLPGETSTATUSint *
0x0000060CLPRESETvoid
0x0000060DLPGETSTATSstruct lp_stats *

// <include/linux/mroute.h>

0x000089E0SIOCGETVIFCNTstruct sioc_vif_req *// I-O
0x000089E1SIOCGETSGCNTstruct sioc_sg_req *// I-O

// <include/linux/msdos_fs.h> смотрите ioctl_fat(2)

0x82307201VFAT_IOCTL_READDIR_BOTHstruct dirent [2]
0x82307202VFAT_IOCTL_READDIR_SHORTstruct dirent [2]
0x80047210FAT_IOCTL_GET_ATTRIBUTES__u32 *
0x40047211FAT_IOCTL_SET_ATTRIBUTESconst __u32 *
0x80047213FAT_IOCTL_GET_VOLUME_ID__u32 *

// <include/linux/mtio.h>

0x40086D01MTIOCTOPconst struct mtop *
0x801C6D02MTIOCGETstruct mtget *
0x80046D03MTIOCPOSstruct mtpos *
0x80206D04MTIOCGETCONFIGstruct mtconfiginfo *
0x40206D05MTIOCSETCONFIGconst struct mtconfiginfo *

// <include/linux/netrom.h>

0x000089E0SIOCNRGETPARMSstruct nr_parms_struct *// I-O
0x000089E1SIOCNRSETPARMSconst struct nr_parms_struct *
0x000089E2SIOCNRDECOBSvoid
0x000089E3SIOCNRRTCTLconst int *

// <include/uapi/linux/wireless.h>
// Данный программный интерфейс устарел.
// Он заменён на nl80211 и cfg80211. Смотрите
// https://wireless.wiki.kernel.org/en/developers/documentation/nl80211

x00008b00SIOCSIWCOMMITstruct iwreq *
x00008b01SIOCGIWNAMEstruct iwreq *
x00008b02SIOCSIWNWIDstruct iwreq *
x00008b03SIOCGIWNWIDstruct iwreq *
x00008b04SIOCSIWFREQstruct iwreq *
x00008b05SIOCGIWFREQstruct iwreq *
x00008b06SIOCSIWMODEstruct iwreq *
x00008b07SIOCGIWMODEstruct iwreq *
x00008b08SIOCSIWSENSstruct iwreq *
x00008b09SIOCGIWSENSstruct iwreq *
x00008b0aSIOCSIWRANGEstruct iwreq *
x00008b0bSIOCGIWRANGEstruct iwreq *
x00008b0cSIOCSIWPRIVstruct iwreq *
x00008b0dSIOCGIWPRIVstruct iwreq *
x00008b0eSIOCSIWSTATSstruct iwreq *
x00008b0fSIOCGIWSTATSstruct iwreq *
x00008b10SIOCSIWSPYstruct iwreq *
x00008b11SIOCGIWSPYstruct iwreq *
x00008b12SIOCSIWTHRSPYstruct iwreq *
x00008b13SIOCGIWTHRSPYstruct iwreq *
x00008b14SIOCSIWAPstruct iwreq *
x00008b15SIOCGIWAPstruct iwreq *
x00008b17SIOCGIWAPLISTstruct iwreq *
x00008b18SIOCSIWSCANstruct iwreq *
x00008b19SIOCGIWSCANstruct iwreq *
x00008b1aSIOCSIWESSIDstruct iwreq *
x00008b1bSIOCGIWESSIDstruct iwreq *
x00008b1cSIOCSIWNICKNstruct iwreq *
x00008b1dSIOCGIWNICKNstruct iwreq *
x00008b20SIOCSIWRATEstruct iwreq *
x00008b21SIOCGIWRATEstruct iwreq *
x00008b22SIOCSIWRTSstruct iwreq *
x00008b23SIOCGIWRTSstruct iwreq *
x00008b24SIOCSIWFRAGstruct iwreq *
x00008b25SIOCGIWFRAGstruct iwreq *
x00008b26SIOCSIWTXPOWstruct iwreq *
x00008b27SIOCGIWTXPOWstruct iwreq *
x00008b28SIOCSIWRETRYstruct iwreq *
x00008b29SIOCGIWRETRYstruct iwreq *
x00008b2aSIOCSIWENCODEstruct iwreq *
x00008b2bSIOCGIWENCODEstruct iwreq *
x00008b2cSIOCSIWPOWERstruct iwreq *
x00008b2dSIOCGIWPOWERstruct iwreq *
x00008b30SIOCSIWGENIEstruct iwreq *
x00008b31SIOCGIWGENIEstruct iwreq *
x00008b16SIOCSIWMLMEstruct iwreq *
x00008b32SIOCSIWAUTHstruct iwreq *
x00008b33SIOCGIWAUTHstruct iwreq *
x00008b34SIOCSIWENCODEEXTstruct iwreq *
x00008b35SIOCGIWENCODEEXTstruct iwreq *
x00008b36SIOCSIWPMKSAstruct iwreq *

// <include/linux/sbpcd.h>

0x00009000DDIOCSDBGconst int *
0x00005382CDROMAUDIOBUFSIZint

// <include/linux/scc.h>

0x00005470TIOCSCCINIvoid
0x00005471TIOCCHANINIconst struct scc_modem *
0x00005472TIOCGKISSstruct ioctl_command *// I-O
0x00005473TIOCSKISSconst struct ioctl_command *
0x00005474TIOCSCCSTATstruct scc_stat *

// <include/linux/scsi.h>

0x00005382SCSI_IOCTL_GET_IDLUN struct { int [2]; } *
0x00005383SCSI_IOCTL_TAGGED_ENABLE void
0x00005384SCSI_IOCTL_TAGGED_DISABLE void
0x00005385SCSI_IOCTL_PROBE_HOSTconst int *// MORE

// <include/linux/smb_fs.h>

0x80027501SMB_IOC_GETMOUNTUIDuid_t *

// <include/uapi/linux/sockios.h> смотрите netdevice(7)

0x0000890BSIOCADDRTconst struct rtentry *// MORE
0x0000890CSIOCDELRTconst struct rtentry *// MORE
0x00008910SIOCGIFNAMEchar []
0x00008911SIOCSIFLINKvoid
0x00008912SIOCGIFCONFstruct ifconf *// MORE // I-O
0x00008913SIOCGIFFLAGSstruct ifreq *// I-O
0x00008914SIOCSIFFLAGSconst struct ifreq *
0x00008915SIOCGIFADDRstruct ifreq *// I-O
0x00008916SIOCSIFADDRconst struct ifreq *
0x00008917SIOCGIFDSTADDRstruct ifreq *// I-O
0x00008918SIOCSIFDSTADDRconst struct ifreq *
0x00008919SIOCGIFBRDADDRstruct ifreq *// I-O
0x0000891ASIOCSIFBRDADDRconst struct ifreq *
0x0000891BSIOCGIFNETMASKstruct ifreq *// I-O
0x0000891CSIOCSIFNETMASKconst struct ifreq *
0x0000891DSIOCGIFMETRICstruct ifreq *// I-O
0x0000891ESIOCSIFMETRICconst struct ifreq *
0x0000891FSIOCGIFMEMstruct ifreq *// I-O
0x00008920SIOCSIFMEMconst struct ifreq *
0x00008921SIOCGIFMTUstruct ifreq *// I-O
0x00008922SIOCSIFMTUconst struct ifreq *
0x00008923OLD_SIOCGIFHWADDRstruct ifreq *// I-O
0x00008924SIOCSIFHWADDRconst struct ifreq *// MORE
0x00008925SIOCGIFENCAPint *
0x00008926SIOCSIFENCAPconst int *
0x00008927SIOCGIFHWADDRstruct ifreq *// I-O
0x00008929SIOCGIFSLAVEvoid
0x00008930SIOCSIFSLAVEvoid
0x00008931SIOCADDMULTIconst struct ifreq *
0x00008932SIOCDELMULTIconst struct ifreq *
0x00008940SIOCADDRTOLDvoid
0x00008941SIOCDELRTOLDvoid
0x00008950SIOCDARPconst struct arpreq *
0x00008951SIOCGARPstruct arpreq *// I-O
0x00008952SIOCSARPconst struct arpreq *
0x00008960SIOCDRARPconst struct arpreq *
0x00008961SIOCGRARPstruct arpreq *// I-O
0x00008962SIOCSRARPconst struct arpreq *
0x00008970SIOCGIFMAPstruct ifreq *// I-O
0x00008971SIOCSIFMAPconst struct ifreq *

// <include/linux/soundcard.h>

0x00005100SNDCTL_SEQ_RESETvoid
0x00005101SNDCTL_SEQ_SYNCvoid
0xC08C5102SNDCTL_SYNTH_INFOstruct synth_info *// I-O
0xC0045103SNDCTL_SEQ_CTRLRATEint *// I-O
0x80045104SNDCTL_SEQ_GETOUTCOUNTint *
0x80045105SNDCTL_SEQ_GETINCOUNTint *
0x40045106SNDCTL_SEQ_PERCMODEvoid
0x40285107SNDCTL_FM_LOAD_INSTRconst struct sbi_instrument *
0x40045108SNDCTL_SEQ_TESTMIDIconst int *
0x40045109SNDCTL_SEQ_RESETSAMPLESconst int *
0x8004510ASNDCTL_SEQ_NRSYNTHSint *
0x8004510BSNDCTL_SEQ_NRMIDISint *
0xC074510CSNDCTL_MIDI_INFOstruct midi_info *// I-O
0x4004510DSNDCTL_SEQ_THRESHOLDconst int *
0xC004510ESNDCTL_SYNTH_MEMAVLint *// I-O
0x4004510FSNDCTL_FM_4OP_ENABLEconst int *
0xCFB85110SNDCTL_PMGR_ACCESSstruct patmgr_info *// I-O
0x00005111SNDCTL_SEQ_PANICvoid
0x40085112SNDCTL_SEQ_OUTOFBANDconst struct seq_event_rec *
0xC0045401SNDCTL_TMR_TIMEBASEint *// I-O
0x00005402SNDCTL_TMR_STARTvoid
0x00005403SNDCTL_TMR_STOPvoid
0x00005404SNDCTL_TMR_CONTINUEvoid
0xC0045405SNDCTL_TMR_TEMPOint *// I-O
0xC0045406SNDCTL_TMR_SOURCEint *// I-O
0x40045407SNDCTL_TMR_METRONOMEconst int *
0x40045408SNDCTL_TMR_SELECTint *// I-O
0xCFB85001SNDCTL_PMGR_IFACEstruct patmgr_info *// I-O
0xC0046D00SNDCTL_MIDI_PRETIMEint *// I-O
0xC0046D01SNDCTL_MIDI_MPUMODEconst int *
0xC0216D02SNDCTL_MIDI_MPUCMDstruct mpu_command_rec *// I-O
0x00005000SNDCTL_DSP_RESETvoid
0x00005001SNDCTL_DSP_SYNCvoid
0xC0045002SNDCTL_DSP_SPEEDint *// I-O
0xC0045003SNDCTL_DSP_STEREOint *// I-O
0xC0045004SNDCTL_DSP_GETBLKSIZEint *// I-O
0xC0045006SOUND_PCM_WRITE_CHANNELSint *// I-O
0xC0045007SOUND_PCM_WRITE_FILTERint *// I-O
0x00005008SNDCTL_DSP_POSTvoid
0xC0045009SNDCTL_DSP_SUBDIVIDEint *// I-O
0xC004500ASNDCTL_DSP_SETFRAGMENTint *// I-O
0x8004500BSNDCTL_DSP_GETFMTSint *
0xC0045005SNDCTL_DSP_SETFMTint *// I-O
0x800C500CSNDCTL_DSP_GETOSPACEstruct audio_buf_info *
0x800C500DSNDCTL_DSP_GETISPACEstruct audio_buf_info *
0x0000500ESNDCTL_DSP_NONBLOCKvoid
0x80045002SOUND_PCM_READ_RATEint *
0x80045006SOUND_PCM_READ_CHANNELSint *
0x80045005SOUND_PCM_READ_BITSint *
0x80045007SOUND_PCM_READ_FILTERint *
0x00004300SNDCTL_COPR_RESETvoid
0xCFB04301SNDCTL_COPR_LOADconst struct copr_buffer *
0xC0144302SNDCTL_COPR_RDATAstruct copr_debug_buf *// I-O
0xC0144303SNDCTL_COPR_RCODEstruct copr_debug_buf *// I-O
0x40144304SNDCTL_COPR_WDATAconst struct copr_debug_buf *
0x40144305SNDCTL_COPR_WCODEconst struct copr_debug_buf *
0xC0144306SNDCTL_COPR_RUNstruct copr_debug_buf *// I-O
0xC0144307SNDCTL_COPR_HALTstruct copr_debug_buf *// I-O
0x4FA44308SNDCTL_COPR_SENDMSGconst struct copr_msg *
0x8FA44309SNDCTL_COPR_RCVMSGstruct copr_msg *
0x80044D00SOUND_MIXER_READ_VOLUMEint *
0x80044D01SOUND_MIXER_READ_BASSint *
0x80044D02SOUND_MIXER_READ_TREBLEint *
0x80044D03SOUND_MIXER_READ_SYNTHint *
0x80044D04SOUND_MIXER_READ_PCMint *
0x80044D05SOUND_MIXER_READ_SPEAKERint *
0x80044D06SOUND_MIXER_READ_LINEint *
0x80044D07SOUND_MIXER_READ_MICint *
0x80044D08SOUND_MIXER_READ_CDint *
0x80044D09SOUND_MIXER_READ_IMIXint *
0x80044D0ASOUND_MIXER_READ_ALTPCMint *
0x80044D0BSOUND_MIXER_READ_RECLEVint *
0x80044D0CSOUND_MIXER_READ_IGAINint *
0x80044D0DSOUND_MIXER_READ_OGAINint *
0x80044D0ESOUND_MIXER_READ_LINE1int *
0x80044D0FSOUND_MIXER_READ_LINE2int *
0x80044D10SOUND_MIXER_READ_LINE3int *
0x80044D1CSOUND_MIXER_READ_MUTEint *
0x80044D1DSOUND_MIXER_READ_ENHANCEint *
0x80044D1ESOUND_MIXER_READ_LOUDint *
0x80044DFFSOUND_MIXER_READ_RECSRCint *
0x80044DFESOUND_MIXER_READ_DEVMASKint *
0x80044DFDSOUND_MIXER_READ_RECMASKint *
0x80044DFBSOUND_MIXER_READ_STEREODEVSint *
0x80044DFCSOUND_MIXER_READ_CAPSint *
0xC0044D00SOUND_MIXER_WRITE_VOLUMEint *// I-O
0xC0044D01SOUND_MIXER_WRITE_BASSint *// I-O
0xC0044D02SOUND_MIXER_WRITE_TREBLEint *// I-O
0xC0044D03SOUND_MIXER_WRITE_SYNTHint *// I-O
0xC0044D04SOUND_MIXER_WRITE_PCMint *// I-O
0xC0044D05SOUND_MIXER_WRITE_SPEAKERint *// I-O
0xC0044D06SOUND_MIXER_WRITE_LINEint *// I-O
0xC0044D07SOUND_MIXER_WRITE_MICint *// I-O
0xC0044D08SOUND_MIXER_WRITE_CDint *// I-O
0xC0044D09SOUND_MIXER_WRITE_IMIXint *// I-O
0xC0044D0ASOUND_MIXER_WRITE_ALTPCMint *// I-O
0xC0044D0BSOUND_MIXER_WRITE_RECLEVint *// I-O
0xC0044D0CSOUND_MIXER_WRITE_IGAINint *// I-O
0xC0044D0DSOUND_MIXER_WRITE_OGAINint *// I-O
0xC0044D0ESOUND_MIXER_WRITE_LINE1int *// I-O
0xC0044D0FSOUND_MIXER_WRITE_LINE2int *// I-O
0xC0044D10SOUND_MIXER_WRITE_LINE3int *// I-O
0xC0044D1CSOUND_MIXER_WRITE_MUTEint *// I-O
0xC0044D1DSOUND_MIXER_WRITE_ENHANCEint *// I-O
0xC0044D1ESOUND_MIXER_WRITE_LOUDint *// I-O
0xC0044DFFSOUND_MIXER_WRITE_RECSRCint *// I-O

// <include/linux/timerfd.h> смотрите timerfd_create(2)

0x40085400TFD_IOC_SET_TICKSuint64_t *

// <include/linux/umsdos_fs.h>

0x000004D2UMSDOS_READDIR_DOSstruct umsdos_ioctl *// I-O
0x000004D3UMSDOS_UNLINK_DOSconst struct umsdos_ioctl *
0x000004D4UMSDOS_RMDIR_DOSconst struct umsdos_ioctl *
0x000004D5UMSDOS_STAT_DOSstruct umsdos_ioctl *// I-O
0x000004D6UMSDOS_CREAT_EMDconst struct umsdos_ioctl *
0x000004D7UMSDOS_UNLINK_EMDconst struct umsdos_ioctl *
0x000004D8UMSDOS_READDIR_EMDstruct umsdos_ioctl *// I-O
0x000004D9UMSDOS_GETVERSIONstruct umsdos_ioctl *
0x000004DAUMSDOS_INIT_EMDvoid
0x000004DBUMSDOS_DOS_SETUPconst struct umsdos_ioctl *
0x000004DCUMSDOS_RENAME_DOSconst struct umsdos_ioctl *

// <include/linux/vt.h>

0x00005600VT_OPENQRYint *
0x00005601VT_GETMODEstruct vt_mode *
0x00005602VT_SETMODEconst struct vt_mode *
0x00005603VT_GETSTATEstruct vt_stat *
0x00005604VT_SENDSIGvoid
0x00005605VT_RELDISPint
0x00005606VT_ACTIVATEint
0x00005607VT_WAITACTIVEint
0x00005608VT_DISALLOCATEint
0x00005609VT_RESIZEconst struct vt_sizes *
0x0000560AVT_RESIZEXconst struct vt_consize *

// Дополнительные аргументы (MORE). Некоторые ioctl вызовы в качестве аргумента ожидают указатель на структуру, которая содержит дополнительные указатели. Такие вызовы описаны здесь в алфавитном порядке.

CDROMREADAUDIO берёт входной указатель const struct cdrom_read_audio *. Поле buf указывает на выходной буфер длиной nframes * CD_FRAMESIZE_RAW.

CDROMREADCOOKED, CDROMREADMODE1, CDROMREADMODE2 и CDROMREADRAW берут входной указатель const struct cdrom_msf *. Они используют такой же указатель в качестве выходного указателя на char []. Длина определяется запросом. Для CDROMREADMODE1 большинство драйверов использует CD_FRAMESIZE, но драйвер Optics Storage использует OPT_BLOCKSIZE (оба имеют числовое значение 2048).

    CDROMREADCOOKED    char [CD_FRAMESIZE]
    CDROMREADMODE1     char [CD_FRAMESIZE или OPT_BLOCKSIZE]
    CDROMREADMODE2     char [CD_FRAMESIZE_RAW0]
    CDROMREADRAW       char [CD_FRAMESIZE_RAW]
EQL_ENSLAVE, EQL_EMANCIPATE, EQL_GETSLAVECFG, EQL_SETSLAVECFG, EQL_GETMASTERCFG и EQL_SETMASTERCFG берут struct ifreq *. Поле ifr_data является указателем на другую структуру:
    EQL_ENSLAVE         const struct slaving_request *
    EQL_EMANCIPATE      const struct slaving_request *
    EQL_GETSLAVECFG     struct slave_config *           // I-O
    EQL_SETSLAVECFG     const struct slave_config *
    EQL_GETMASTERCFG    struct master_config *
    EQL_SETMASTERCFG    const struct master_config *
FDRAWCMD берёт struct floppy raw_cmd *. Если flags & FD_RAW_WRITE не ноль, то data указывает на входной буфер длиной length. Если flags & FD_RAW_READ не ноль, то data указывает на выходной буфер длиной length.

GIO_FONTX и PIO_FONTX берут struct console_font_desc * или const struct console_font_desc *, соответственно. chardata указывает на буфер char [charcount]. Это выходной буфер для GIO_FONTX и входной буфер для PIO_FONTX.

GIO_UNIMAP и PIO_UNIMAP берут struct unimapdesc * или const struct unimapdesc *, соответственно. entries указывает на буфер struct unipair [entry_ct]. Это выходной буфер для GIO_UNIMAP и входной буфер для PIO_UNIMAP.

KDADDIO, KDDELIO, KDDISABIO и KDENABIO разрешают или запрещают доступ к портам ввода/вывода. Они являются необходимыми альтернативными интерфейсами к «ioperm».

KDMAPDISP и KDUNMAPDISP разрешают или запрещают отображение памяти или доступ к порту ввода/вывода. Они не реализованы в ядре.

SCSI_IOCTL_PROBE_HOST берёт входной указатель const int *, который является длиной. Он использует такой же указатель как выходной указатель на буфер char [] этой длины.

SIOCADDRT и SIOCDELRT берут входной указатель, чей тип зависит от протокола:

    Большинство протоколов  const struct rtentry *
    AX.25                   const struct ax25_route *
    NET/ROM                 const struct nr_route_struct *
    INET6                   const struct in6_rtmsg *
SIOCGIFCONF берёт struct ifconf *. Поле ifc_buf указывает на буфер длиной ifc_len байт, в который ядро пишет список типов type struct ifreq [].

SIOCSIFHWADDR берёт входной указатель, чей тип зависит от протокола:

    большинство протоколов      const struct ifreq *
    AX.25                       const char [AX25_ADDR_LEN]
TIOCLINUX берёт const char *. Он использует его для того, чтобы разделить некоторые независимые подоперации. В таблице ниже, N + foo означает foo после N начальных байт. struct selection неявно определена в drivers/char/selection.c
    TIOCLINUX-2         1 + const struct selection *
    TIOCLINUX-3         void
    TIOCLINUX-4         void
    TIOCLINUX-5         4 + const struct { long [8]; } *
    TIOCLINUX-6         char *
    TIOCLINUX-7         char *
    TIOCLINUX-10        1 + const char *
// Дублирующие вызовы ioctls

Этот список не включает ioctl вызовы в диапазоне SIOCDEVPRIVATE и SIOCPROTOPRIVATE.

0x00000001FDSETPRMFIBMAP
0x00000002FDDEFPRMFIGETBSZ
0x00005382CDROMAUDIOBUFSIZSCSI_IOCTL_GET_IDLUN
0x00005402SNDCTL_TMR_STARTTCSETS
0x00005403SNDCTL_TMR_STOPTCSETSW
0x00005404SNDCTL_TMR_CONTINUETCSETSF