ioctl_list(2) Linux/i386 カーネルの ioctl のリスト

説明

この文章は ioctl リスト 1.3.27、つまり Linux/i386 カーネル 1.3.27 に おける ioctl コールの一覧です。このリストは </usr/include/{asm,linux}/*.h> にある 421 の ioctl を含んでいます。全ての ioctl に対して、数値、名称、 引き数の型を列挙してあります。

引き数型 const struct foo * は、その引き数がカーネルへの入力である事を意味します。また、 struct foo * は、その引き数がカーネルからの出力である事を意味します。 カーネルがその引き数を入力と出力の両方に使用する場合は、 // I-O マークを付けてあります。

いくつかの ioctl は複数の構造体の引き数を必要としたり、値を返したり します。これらには // MORE マークを付けて、 さらに分離したセクションで説明してあります。

このリストは不完全です。

ioctl の構造

ioctl コマンドの値は 32 ビットの定数です。 原則として、これらの定数は全く任意のものですが、 設計者は何らかの構造をこれらの定数に組み込もうとしています。

昔の Linux では、大部分は 16 ビットの定数であり、 下位バイトはシリアル番号で、上位バイトはドライバのタイプを表していました。 メジャー番号が使われることもありました: 0x03 が HDIO_* ioctl, 0x06 が LP* ioctl などです。 1 文字以上の ASCII 文字列が使われることもありました。 たとえば TCGETS の値は 0x00005401 であり、 0x54 = 'T' でターミナルドライバを表します。 CYGETTIMEOUT の値は 0x00435906 であり、 0x43 0x59 = 'C' 'Y' で cyclades ドライバを表します。

後の時代 (0.98p5) になると、 より多くの情報が数値に組み込まれるようになりました。 1 つの数値は、読み書きの方向を表す 2 ビット (00: 読み書きなし, 01: 書き込み, 10: 読み込み, 11: 読み込み/書き込み)、 (引き数のサイズを表す) 14 ビット、 (共通の目的または共通のドライバで ioctl をグループにするための) 8 ビットのタイプ、8 ビットのシリアル番号から構成されます。

この構造を記述するマクロは <asm/ioctl.h> にあり、 _IO(type,nr){_IOR,_IOW,_IOWR}(type,nr,size) です。 これらのマクロは sizeof(size) を使うので、 ここで size という名前にしているのは間違っています: この 3 つ目の引き数はデータタイプです。

size ビットは全く当てにならない点に注意して下さい: 多くの場合、間違っています。 これは sizeof(sizeof(struct)) を使ったバグを含んだマクロや、過去から受け継いだ値が原因です。

したがって、新しい構造は不都合な点しかないように思われます: この構造はチェックの手助けにはならず、 様々なアーキテクチャによって値を変化させてしまいます。

返り値

きちんとした ioctl は、成功した場合は 0 を返し、 エラーの場合は -1 を返します。 また出力値は引き数に格納します。 しかし実際は、かなり多くの ioctl が出力値を返します。 これは今のところ以下では示されていません。

// Main table.

// <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/ext2_fs.h>

0x80046601EXT2_IOC_GETFLAGSint *
0x40046602EXT2_IOC_SETFLAGSconst int *
0x80047601EXT2_IOC_GETVERSIONint *
0x40047602EXT2_IOC_SETVERSIONconst int *

// <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 *

// <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>

0x82307201VFAT_IOCTL_READDIR_BOTHstruct dirent [2]
0x82307202VFAT_IOCTL_READDIR_SHORTstruct dirent [2]
0x80047210FAT_IOCTL_GET_ATTRIBUTES__u32 *
0x40047211FAT_IOCTL_SET_ATTRIBUTESconst __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/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_IDLUNstruct { int [2]; } *
0x00005383SCSI_IOCTL_TAGGED_ENABLEvoid
0x00005384SCSI_IOCTL_TAGGED_DISABLEvoid
0x00005385SCSI_IOCTL_PROBE_HOSTconst int *// MORE

// <include/linux/smb_fs.h>

0x80027501SMB_IOC_GETMOUNTUIDuid_t *

// <include/linux/sockios.h>

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/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 arguments. いくつかの ioctl は追加のポインタを含む構造体へのポインタを使用します。 ここでこれらをアルファベット順に説明します。

CDROMREADAUDIO は入力ポインタ const struct cdrom_read_audio * を使用します。 buf フィールドは大きさ nframes * CD_FRAMESIZE_RAW の出力バッファへのポインタです。

CDROMREADCOOKED, CDROMREADMODE1, CDROMREADMODE2, CDROMREADRAW は入力ポインタ const struct cdrom_msf * を使用します。これらは同じポインタを char [] への出力ポインタとして使用します。 長さは要求によって変化します。 CDROMREADMODE1 には、多くのデバイスが CD_FRAMESIZE を使用しますが、光学記憶装置 (光ディスク) のドライバは OPT_BLOCKSIZE を使用します (どちらも同じ値で 2048 です)。

    CDROMREADCOOKED    char [CD_FRAMESIZE]
    CDROMREADMODE1     char [CD_FRAMESIZE or OPT_BLOCKSIZE]
    CDROMREADMODE2     char [CD_FRAMESIZE_RAW0]
    CDROMREADRAW       char [CD_FRAMESIZE_RAW]
EQL_ENSLAVE, EQL_EMANCIPATE, EQL_GETSLAVECFG, EQL_SETSLAVECFG, EQL_GETMASTERCFG, EQL_SETMASTERCFGstruct 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 *
FDRAWCMDstruct 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 * を使用します。 chardatachar [charcount] バッファへのポインタです。 これは GIO_FONTX の出力バッファと PIO_FONTX の入力バッファです。

GIO_UNIMAP, PIO_UNIMAP はそれぞれ struct unimapdesc *const struct unimapdesc * を使用します。 entriesstruct unipair [entry_ct] バッファへのポインタです。 これは GIO_UNIMAP の出力バッファと PIO_UNIMAP の入力バッファです。

KDADDIO, KDDELIO, KDDISABIO, KDENABIO は I/O ポートへのアクセスを 可能/不可能にします。これらは本質的に、'ioperm' への別の インターフェースです。

KDMAPDISP, KDUNMAPDISP はメモリマッピングや I/O ポートへのアクセスを可能/不可能にします。 これらはカーネルに実装されていません。

SCSI_IOCTL_PROBE_HOST は入力ポインタ const int * を大きさとして使用します。これは同じ大きさの char [] バッファ への出力ポインタとしても使用します。

SIOCADDRT, SIOCDELRT は型が以下のプロトコルに依存する入力ポインタを使用します:

    Most protocols      const struct rtentry *
    AX.25               const struct ax25_route *
    NET/ROM             const struct nr_route_struct *
SIOCGIFCONFstruct ifconf * を使用します。この ifc_buf フィールドは長さ ifc_len バイトのバッファへのポインタです。 これにカーネルが struct ifreq [] 型のリストへ書き込みます。

SIOCSIFHWADDR は型が以下のプロトコルに依存する入力ポインタを使用します:

    Most protocols      const struct ifreq *
    AX.25               const char [AX25_ADDR_LEN]
TIOCLINUXconst char * を使用します。このポインタをいくつかの 独立したサブクラスを識別する為に使用します。以下のテーブルの中で、 N + foo は N バイトの詰めものの後にある foo を意味します。 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 *
// Duplicate ioctls

このリストは SIOCDEVPRIVATE から SIOCPROTOPRIVATE の範囲の ioctl を含んでいません。

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

この文書について

この man ページは Linux man-pages プロジェクトのリリース 3.65 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。