この文章は 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>
0x00008901 |
FIOSETOWN |
const int * |
0x00008902 |
SIOCSPGRP |
const int * |
0x00008903 |
FIOGETOWN |
int * |
0x00008904 |
SIOCGPGRP |
int * |
0x00008905 |
SIOCATMAR |
int * |
0x00008906 |
SIOCGSTAMP |
timeval * |
// <include/asm-i386/termios.h>
0x00005401 |
TCGETS |
struct termios * |
0x00005402 |
TCSETS |
const struct termios * |
0x00005403 |
TCSETSW |
const struct termios * |
0x00005404 |
TCSETSF |
const struct termios * |
0x00005405 |
TCGETA |
struct termio * |
0x00005406 |
TCSETA |
const struct termio * |
0x00005407 |
TCSETAW |
const struct termio * |
0x00005408 |
TCSETAF |
const struct termio * |
0x00005409 |
TCSBRK |
int |
0x0000540A |
TCXONC |
int |
0x0000540B |
TCFLSH |
int |
0x0000540C |
TIOCEXCL |
void |
0x0000540D |
TIOCNXCL |
void |
0x0000540E |
TIOCSCTTY |
int |
0x0000540F |
TIOCGPGRP |
pid_t * |
0x00005410 |
TIOCSPGRP |
const pid_t * |
0x00005411 |
TIOCOUTQ |
int * |
0x00005412 |
TIOCSTI |
const char * |
0x00005413 |
TIOCGWINSZ |
struct winsize * |
0x00005414 |
TIOCSWINSZ |
const struct winsize * |
0x00005415 |
TIOCMGET |
int * |
0x00005416 |
TIOCMBIS |
const int * |
0x00005417 |
TIOCMBIC |
const int * |
0x00005418 |
TIOCMSET |
const int * |
0x00005419 |
TIOCGSOFTCAR |
int * |
0x0000541A |
TIOCSSOFTCAR |
const int * |
0x0000541B |
FIONREAD |
int * |
0x0000541B |
TIOCINQ |
int * |
0x0000541C |
TIOCLINUX |
const char * |
// MORE |
0x0000541D |
TIOCCONS |
void |
0x0000541E |
TIOCGSERIAL |
struct serial_struct * |
0x0000541F |
TIOCSSERIAL |
const struct serial_struct * |
0x00005420 |
TIOCPKT |
const int * |
0x00005421 |
FIONBIO |
const int * |
0x00005422 |
TIOCNOTTY |
void |
0x00005423 |
TIOCSETD |
const int * |
0x00005424 |
TIOCGETD |
int * |
0x00005425 |
TCSBRKP |
int |
0x00005426 |
TIOCTTYGSTRUCT |
struct tty_struct * |
0x00005450 |
FIONCLEX |
void |
0x00005451 |
FIOCLEX |
void |
0x00005452 |
FIOASYNC |
const int * |
0x00005453 |
TIOCSERCONFIG |
void |
0x00005454 |
TIOCSERGWILD |
int * |
0x00005455 |
TIOCSERSWILD |
const int * |
0x00005456 |
TIOCGLCKTRMIOS |
struct termios * |
0x00005457 |
TIOCSLCKTRMIOS |
const struct termios * |
0x00005458 |
TIOCSERGSTRUCT |
struct async_struct * |
0x00005459 |
TIOCSERGETLSR |
int * |
0x0000545A |
TIOCSERGETMULTI |
struct serial_multiport_struct * |
0x0000545B |
TIOCSERSETMULTI |
const struct serial_multiport_struct * |
// <include/linux/ax25.h>
0x000089E0 |
SIOCAX25GETUID |
const struct sockaddr_ax25 * |
0x000089E1 |
SIOCAX25ADDUID |
const struct sockaddr_ax25 * |
0x000089E2 |
SIOCAX25DELUID |
const struct sockaddr_ax25 * |
0x000089E3 |
SIOCAX25NOUID |
const int * |
0x000089E4 |
SIOCAX25DIGCTL |
const int * |
0x000089E5 |
SIOCAX25GETPARMS |
struct ax25_parms_struct * |
// I-O |
0x000089E6 |
SIOCAX25SETPARMS |
const struct ax25_parms_struct * |
// <include/linux/cdk.h>
0x00007314 |
STL_BINTR |
void |
0x00007315 |
STL_BSTART |
void |
0x00007316 |
STL_BSTOP |
void |
0x00007317 |
STL_BRESET |
void |
// <include/linux/cdrom.h>
0x00005301 |
CDROMPAUSE |
void |
0x00005302 |
CDROMRESUME |
void |
0x00005303 |
CDROMPLAYMSF |
const struct cdrom_msf * |
0x00005304 |
CDROMPLAYTRKIND |
const struct cdrom_ti * |
0x00005305 |
CDROMREADTOCHDR |
struct cdrom_tochdr * |
0x00005306 |
CDROMREADTOCENTRY |
struct cdrom_tocentry * |
// I-O |
0x00005307 |
CDROMSTOP |
void |
0x00005308 |
CDROMSTART |
void |
0x00005309 |
CDROMEJECT |
void |
0x0000530A |
CDROMVOLCTRL |
const struct cdrom_volctrl * |
0x0000530B |
CDROMSUBCHNL |
struct cdrom_subchnl * |
// I-O |
0x0000530C |
CDROMREADMODE2 |
const struct cdrom_msf * |
// MORE |
0x0000530D |
CDROMREADMODE1 |
const struct cdrom_msf * |
// MORE |
0x0000530E |
CDROMREADAUDIO |
const struct cdrom_read_audio * |
// MORE |
0x0000530F |
CDROMEJECT_SW |
int |
0x00005310 |
CDROMMULTISESSION |
struct cdrom_multisession * |
// I-O |
0x00005311 |
CDROM_GET_UPC |
struct { char [8]; } * |
0x00005312 |
CDROMRESET |
void |
0x00005313 |
CDROMVOLREAD |
struct cdrom_volctrl * |
0x00005314 |
CDROMREADRAW |
const struct cdrom_msf * |
// MORE |
0x00005315 |
CDROMREADCOOKED |
const struct cdrom_msf * |
// MORE |
0x00005316 |
CDROMSEEK |
const struct cdrom_msf * |
// <include/linux/cm206.h>
0x00002000 |
CM206CTL_GET_STAT |
int |
0x00002001 |
CM206CTL_GET_LAST_STAT |
int |
// <include/linux/cyclades.h>
0x00435901 |
CYGETMON |
struct cyclades_monitor * |
0x00435902 |
CYGETTHRESH |
int * |
0x00435903 |
CYSETTHRESH |
int |
0x00435904 |
CYGETDEFTHRESH |
int * |
0x00435905 |
CYSETDEFTHRESH |
int |
0x00435906 |
CYGETTIMEOUT |
int * |
0x00435907 |
CYSETTIMEOUT |
int |
0x00435908 |
CYGETDEFTIMEOUT |
int * |
0x00435909 |
CYSETDEFTIMEOUT |
int |
// <include/linux/ext2_fs.h>
0x80046601 |
EXT2_IOC_GETFLAGS |
int * |
0x40046602 |
EXT2_IOC_SETFLAGS |
const int * |
0x80047601 |
EXT2_IOC_GETVERSION |
int * |
0x40047602 |
EXT2_IOC_SETVERSION |
const int * |
// <include/linux/fd.h>
0x00000000 |
FDCLRPRM |
void |
0x00000001 |
FDSETPRM |
const struct floppy_struct * |
0x00000002 |
FDDEFPRM |
const struct floppy_struct * |
0x00000003 |
FDGETPRM |
struct floppy_struct * |
0x00000004 |
FDMSGON |
void |
0x00000005 |
FDMSGOFF |
void |
0x00000006 |
FDFMTBEG |
void |
0x00000007 |
FDFMTTRK |
const struct format_descr * |
0x00000008 |
FDFMTEND |
void |
0x0000000A |
FDSETEMSGTRESH |
int |
0x0000000B |
FDFLUSH |
void |
0x0000000C |
FDSETMAXERRS |
const struct floppy_max_errors * |
0x0000000E |
FDGETMAXERRS |
struct floppy_max_errors * |
0x00000010 |
FDGETDRVTYP |
struct { char [16]; } * |
0x00000014 |
FDSETDRVPRM |
const struct floppy_drive_params * |
0x00000015 |
FDGETDRVPRM |
struct floppy_drive_params * |
0x00000016 |
FDGETDRVSTAT |
struct floppy_drive_struct * |
0x00000017 |
FDPOLLDRVSTAT |
struct floppy_drive_struct * |
0x00000018 |
FDRESET |
int |
0x00000019 |
FDGETFDCSTAT |
struct floppy_fdc_state * |
0x0000001B |
FDWERRORCLR |
void |
0x0000001C |
FDWERRORGET |
struct floppy_write_errors * |
0x0000001E |
FDRAWCMD |
struct floppy_raw_cmd * |
// MORE // I-O |
0x00000028 |
FDTWADDLE |
void |
// <include/linux/fs.h>
0x0000125D |
BLKROSET |
const int * |
0x0000125E |
BLKROGET |
int * |
0x0000125F |
BLKRRPART |
void |
0x00001260 |
BLKGETSIZE |
unsigned long * |
0x00001261 |
BLKFLSBUF |
void |
0x00001262 |
BLKRASET |
int |
0x00001263 |
BLKRAGET |
int * |
0x00000001 |
FIBMAP |
int * |
// I-O |
0x00000002 |
FIGETBSZ |
int * |
// <include/linux/hdreg.h>
0x00000301 |
HDIO_GETGEO |
struct hd_geometry * |
0x00000302 |
HDIO_GET_UNMASKINTR |
int * |
0x00000304 |
HDIO_GET_MULTCOUNT |
int * |
0x00000307 |
HDIO_GET_IDENTITY |
struct hd_driveid * |
0x00000308 |
HDIO_GET_KEEPSETTINGS |
int * |
0x00000309 |
HDIO_GET_CHIPSET |
int * |
0x0000030A |
HDIO_GET_NOWERR |
int * |
0x0000030B |
HDIO_GET_DMA |
int * |
0x0000031F |
HDIO_DRIVE_CMD |
int * |
// I-O |
0x00000321 |
HDIO_SET_MULTCOUNT |
int |
0x00000322 |
HDIO_SET_UNMASKINTR |
int |
0x00000323 |
HDIO_SET_KEEPSETTINGS |
int |
0x00000324 |
HDIO_SET_CHIPSET |
int |
0x00000325 |
HDIO_SET_NOWERR |
int |
0x00000326 |
HDIO_SET_DMA |
int |
// <include/linux/if_eql.h>
0x000089F0 |
EQL_ENSLAVE |
struct ifreq * |
// MORE // I-O |
0x000089F1 |
EQL_EMANCIPATE |
struct ifreq * |
// MORE // I-O |
0x000089F2 |
EQL_GETSLAVECFG |
struct ifreq * |
// MORE // I-O |
0x000089F3 |
EQL_SETSLAVECFG |
struct ifreq * |
// MORE // I-O |
0x000089F4 |
EQL_GETMASTRCFG |
struct ifreq * |
// MORE // I-O |
0x000089F5 |
EQL_SETMASTRCFG |
struct ifreq * |
// MORE // I-O |
// <include/linux/if_plip.h>
0x000089F0 |
SIOCDEVPLIP |
struct ifreq * |
// I-O |
// <include/linux/if_ppp.h>
0x00005490 |
PPPIOCGFLAGS |
int * |
0x00005491 |
PPPIOCSFLAGS |
const int * |
0x00005492 |
PPPIOCGASYNCMAP |
int * |
0x00005493 |
PPPIOCSASYNCMAP |
const int * |
0x00005494 |
PPPIOCGUNIT |
int * |
0x00005495 |
PPPIOCSINPSIG |
const int * |
0x00005497 |
PPPIOCSDEBUG |
const int * |
0x00005498 |
PPPIOCGDEBUG |
int * |
0x00005499 |
PPPIOCGSTAT |
struct ppp_stats * |
0x0000549A |
PPPIOCGTIME |
struct ppp_ddinfo * |
0x0000549B |
PPPIOCGXASYNCMAP |
struct { int [8]; } * |
0x0000549C |
PPPIOCSXASYNCMAP |
const struct { int [8]; } * |
0x0000549D |
PPPIOCSMRU |
const int * |
0x0000549E |
PPPIOCRASYNCMAP |
const int * |
0x0000549F |
PPPIOCSMAXCID |
const int * |
// <include/linux/ipx.h>
0x000089E0 |
SIOCAIPXITFCRT |
const char * |
0x000089E1 |
SIOCAIPXPRISLT |
const char * |
0x000089E2 |
SIOCIPXCFGDATA |
struct ipx_config_data * |
// <include/linux/kd.h>
0x00004B60 |
GIO_FONT |
struct { char [8192]; } * |
0x00004B61 |
PIO_FONT |
const struct { char [8192]; } * |
0x00004B6B |
GIO_FONTX |
struct console_font_desc * |
// MORE // I-O |
0x00004B6C |
PIO_FONTX |
const struct console_font_desc * |
//MORE |
0x00004B70 |
GIO_CMAP |
struct { char [48]; } * |
0x00004B71 |
PIO_CMAP |
const struct { char [48]; } |
0x00004B2F |
KIOCSOUND |
int |
0x00004B30 |
KDMKTONE |
int |
0x00004B31 |
KDGETLED |
char * |
0x00004B32 |
KDSETLED |
int |
0x00004B33 |
KDGKBTYPE |
char * |
0x00004B34 |
KDADDIO |
int |
// MORE |
0x00004B35 |
KDDELIO |
int |
// MORE |
0x00004B36 |
KDENABIO |
void |
// MORE |
0x00004B37 |
KDDISABIO |
void |
// MORE |
0x00004B3A |
KDSETMODE |
int |
0x00004B3B |
KDGETMODE |
int * |
0x00004B3C |
KDMAPDISP |
void |
// MORE |
0x00004B3D |
KDUNMAPDISP |
void |
// MORE |
0x00004B40 |
GIO_SCRNMAP |
struct { char [E_TABSZ]; } * |
0x00004B41 |
PIO_SCRNMAP |
const struct { char [E_TABSZ]; } * |
0x00004B69 |
GIO_UNISCRNMAP |
struct { short [E_TABSZ]; } * |
0x00004B6A |
PIO_UNISCRNMAP |
const struct { short [E_TABSZ]; } * |
0x00004B66 |
GIO_UNIMAP |
struct unimapdesc * |
// MORE // I-O |
0x00004B67 |
PIO_UNIMAP |
const struct unimapdesc * |
// MORE |
0x00004B68 |
PIO_UNIMAPCLR |
const struct unimapinit * |
0x00004B44 |
KDGKBMODE |
int * |
0x00004B45 |
KDSKBMODE |
int |
0x00004B62 |
KDGKBMETA |
int * |
0x00004B63 |
KDSKBMETA |
int |
0x00004B64 |
KDGKBLED |
int * |
0x00004B65 |
KDSKBLED |
int |
0x00004B46 |
KDGKBENT |
struct kbentry * |
// I-O |
0x00004B47 |
KDSKBENT |
const struct kbentry * |
0x00004B48 |
KDGKBSENT |
struct kbsentry * |
// I-O |
0x00004B49 |
KDSKBSENT |
const struct kbsentry * |
0x00004B4A |
KDGKBDIACR |
struct kbdiacrs * |
0x00004B4B |
KDSKBDIACR |
const struct kbdiacrs * |
0x00004B4C |
KDGETKEYCODE |
struct kbkeycode * |
// I-O |
0x00004B4D |
KDSETKEYCODE |
const struct kbkeycode * |
0x00004B4E |
KDSIGACCEPT |
int |
// <include/linux/lp.h>
0x00000601 |
LPCHAR |
int |
0x00000602 |
LPTIME |
int |
0x00000604 |
LPABORT |
int |
0x00000605 |
LPSETIRQ |
int |
0x00000606 |
LPGETIRQ |
int * |
0x00000608 |
LPWAIT |
int |
0x00000609 |
LPCAREFUL |
int |
0x0000060A |
LPABORTOPEN |
int |
0x0000060B |
LPGETSTATUS |
int * |
0x0000060C |
LPRESET |
void |
0x0000060D |
LPGETSTATS |
struct lp_stats * |
// <include/linux/mroute.h>
0x000089E0 |
SIOCGETVIFCNT |
struct sioc_vif_req * |
// I-O |
0x000089E1 |
SIOCGETSGCNT |
struct sioc_sg_req * |
// I-O |
// <include/linux/msdos_fs.h>
0x82307201 |
VFAT_IOCTL_READDIR_BOTH |
struct dirent [2] |
0x82307202 |
VFAT_IOCTL_READDIR_SHORT |
struct dirent [2] |
0x80047210 |
FAT_IOCTL_GET_ATTRIBUTES |
__u32 * |
0x40047211 |
FAT_IOCTL_SET_ATTRIBUTES |
const __u32 * |
// <include/linux/mtio.h>
0x40086D01 |
MTIOCTOP |
const struct mtop * |
0x801C6D02 |
MTIOCGET |
struct mtget * |
0x80046D03 |
MTIOCPOS |
struct mtpos * |
0x80206D04 |
MTIOCGETCONFIG |
struct mtconfiginfo * |
0x40206D05 |
MTIOCSETCONFIG |
const struct mtconfiginfo * |
// <include/linux/netrom.h>
0x000089E0 |
SIOCNRGETPARMS |
struct nr_parms_struct * |
// I-O |
0x000089E1 |
SIOCNRSETPARMS |
const struct nr_parms_struct * |
0x000089E2 |
SIOCNRDECOBS |
void |
0x000089E3 |
SIOCNRRTCTL |
const int * |
// <include/linux/sbpcd.h>
0x00009000 |
DDIOCSDBG |
const int * |
0x00005382 |
CDROMAUDIOBUFSIZ |
int |
// <include/linux/scc.h>
0x00005470 |
TIOCSCCINI |
void |
0x00005471 |
TIOCCHANINI |
const struct scc_modem * |
0x00005472 |
TIOCGKISS |
struct ioctl_command * |
// I-O |
0x00005473 |
TIOCSKISS |
const struct ioctl_command * |
0x00005474 |
TIOCSCCSTAT |
struct scc_stat * |
// <include/linux/scsi.h>
0x00005382 |
SCSI_IOCTL_GET_IDLUN |
struct { int [2]; } * |
0x00005383 |
SCSI_IOCTL_TAGGED_ENABLE |
void |
0x00005384 |
SCSI_IOCTL_TAGGED_DISABLE |
void |
0x00005385 |
SCSI_IOCTL_PROBE_HOST |
const int * |
// MORE |
// <include/linux/smb_fs.h>
0x80027501 |
SMB_IOC_GETMOUNTUID |
uid_t * |
// <include/linux/sockios.h>
0x0000890B |
SIOCADDRT |
const struct rtentry * |
// MORE |
0x0000890C |
SIOCDELRT |
const struct rtentry * |
// MORE |
0x00008910 |
SIOCGIFNAME |
char [] |
0x00008911 |
SIOCSIFLINK |
void |
0x00008912 |
SIOCGIFCONF |
struct ifconf * |
// MORE // I-O |
0x00008913 |
SIOCGIFFLAGS |
struct ifreq * |
// I-O |
0x00008914 |
SIOCSIFFLAGS |
const struct ifreq * |
0x00008915 |
SIOCGIFADDR |
struct ifreq * |
// I-O |
0x00008916 |
SIOCSIFADDR |
const struct ifreq * |
0x00008917 |
SIOCGIFDSTADDR |
struct ifreq * |
// I-O |
0x00008918 |
SIOCSIFDSTADDR |
const struct ifreq * |
0x00008919 |
SIOCGIFBRDADDR |
struct ifreq * |
// I-O |
0x0000891A |
SIOCSIFBRDADDR |
const struct ifreq * |
0x0000891B |
SIOCGIFNETMASK |
struct ifreq * |
// I-O |
0x0000891C |
SIOCSIFNETMASK |
const struct ifreq * |
0x0000891D |
SIOCGIFMETRIC |
struct ifreq * |
// I-O |
0x0000891E |
SIOCSIFMETRIC |
const struct ifreq * |
0x0000891F |
SIOCGIFMEM |
struct ifreq * |
// I-O |
0x00008920 |
SIOCSIFMEM |
const struct ifreq * |
0x00008921 |
SIOCGIFMTU |
struct ifreq * |
// I-O |
0x00008922 |
SIOCSIFMTU |
const struct ifreq * |
0x00008923 |
OLD_SIOCGIFHWADDR |
struct ifreq * |
// I-O |
0x00008924 |
SIOCSIFHWADDR |
const struct ifreq * |
// MORE |
0x00008925 |
SIOCGIFENCAP |
int * |
0x00008926 |
SIOCSIFENCAP |
const int * |
0x00008927 |
SIOCGIFHWADDR |
struct ifreq * |
// I-O |
0x00008929 |
SIOCGIFSLAVE |
void |
0x00008930 |
SIOCSIFSLAVE |
void |
0x00008931 |
SIOCADDMULTI |
const struct ifreq * |
0x00008932 |
SIOCDELMULTI |
const struct ifreq * |
0x00008940 |
SIOCADDRTOLD |
void |
0x00008941 |
SIOCDELRTOLD |
void |
0x00008950 |
SIOCDARP |
const struct arpreq * |
0x00008951 |
SIOCGARP |
struct arpreq * |
// I-O |
0x00008952 |
SIOCSARP |
const struct arpreq * |
0x00008960 |
SIOCDRARP |
const struct arpreq * |
0x00008961 |
SIOCGRARP |
struct arpreq * |
// I-O |
0x00008962 |
SIOCSRARP |
const struct arpreq * |
0x00008970 |
SIOCGIFMAP |
struct ifreq * |
// I-O |
0x00008971 |
SIOCSIFMAP |
const struct ifreq * |
// <include/linux/soundcard.h>
0x00005100 |
SNDCTL_SEQ_RESET |
void |
0x00005101 |
SNDCTL_SEQ_SYNC |
void |
0xC08C5102 |
SNDCTL_SYNTH_INFO |
struct synth_info * |
// I-O |
0xC0045103 |
SNDCTL_SEQ_CTRLRATE |
int * |
// I-O |
0x80045104 |
SNDCTL_SEQ_GETOUTCOUNT |
int * |
0x80045105 |
SNDCTL_SEQ_GETINCOUNT |
int * |
0x40045106 |
SNDCTL_SEQ_PERCMODE |
void |
0x40285107 |
SNDCTL_FM_LOAD_INSTR |
const struct sbi_instrument * |
0x40045108 |
SNDCTL_SEQ_TESTMIDI |
const int * |
0x40045109 |
SNDCTL_SEQ_RESETSAMPLES |
const int * |
0x8004510A |
SNDCTL_SEQ_NRSYNTHS |
int * |
0x8004510B |
SNDCTL_SEQ_NRMIDIS |
int * |
0xC074510C |
SNDCTL_MIDI_INFO |
struct midi_info * |
// I-O |
0x4004510D |
SNDCTL_SEQ_THRESHOLD |
const int * |
0xC004510E |
SNDCTL_SYNTH_MEMAVL |
int * |
// I-O |
0x4004510F |
SNDCTL_FM_4OP_ENABLE |
const int * |
0xCFB85110 |
SNDCTL_PMGR_ACCESS |
struct patmgr_info * |
// I-O |
0x00005111 |
SNDCTL_SEQ_PANIC |
void |
0x40085112 |
SNDCTL_SEQ_OUTOFBAND |
const struct seq_event_rec * |
0xC0045401 |
SNDCTL_TMR_TIMEBASE |
int * |
// I-O |
0x00005402 |
SNDCTL_TMR_START |
void |
0x00005403 |
SNDCTL_TMR_STOP |
void |
0x00005404 |
SNDCTL_TMR_CONTINUE |
void |
0xC0045405 |
SNDCTL_TMR_TEMPO |
int * |
// I-O |
0xC0045406 |
SNDCTL_TMR_SOURCE |
int * |
// I-O |
0x40045407 |
SNDCTL_TMR_METRONOME |
const int * |
0x40045408 |
SNDCTL_TMR_SELECT |
int * |
// I-O |
0xCFB85001 |
SNDCTL_PMGR_IFACE |
struct patmgr_info * |
// I-O |
0xC0046D00 |
SNDCTL_MIDI_PRETIME |
int * |
// I-O |
0xC0046D01 |
SNDCTL_MIDI_MPUMODE |
const int * |
0xC0216D02 |
SNDCTL_MIDI_MPUCMD |
struct mpu_command_rec * |
// I-O |
0x00005000 |
SNDCTL_DSP_RESET |
void |
0x00005001 |
SNDCTL_DSP_SYNC |
void |
0xC0045002 |
SNDCTL_DSP_SPEED |
int * |
// I-O |
0xC0045003 |
SNDCTL_DSP_STEREO |
int * |
// I-O |
0xC0045004 |
SNDCTL_DSP_GETBLKSIZE |
int * |
// I-O |
0xC0045006 |
SOUND_PCM_WRITE_CHANNELS |
int * |
// I-O |
0xC0045007 |
SOUND_PCM_WRITE_FILTER |
int * |
// I-O |
0x00005008 |
SNDCTL_DSP_POST |
void |
0xC0045009 |
SNDCTL_DSP_SUBDIVIDE |
int * |
// I-O |
0xC004500A |
SNDCTL_DSP_SETFRAGMENT |
int * |
// I-O |
0x8004500B |
SNDCTL_DSP_GETFMTS |
int * |
0xC0045005 |
SNDCTL_DSP_SETFMT |
int * |
// I-O |
0x800C500C |
SNDCTL_DSP_GETOSPACE |
struct audio_buf_info * |
0x800C500D |
SNDCTL_DSP_GETISPACE |
struct audio_buf_info * |
0x0000500E |
SNDCTL_DSP_NONBLOCK |
void |
0x80045002 |
SOUND_PCM_READ_RATE |
int * |
0x80045006 |
SOUND_PCM_READ_CHANNELS |
int * |
0x80045005 |
SOUND_PCM_READ_BITS |
int * |
0x80045007 |
SOUND_PCM_READ_FILTER |
int * |
0x00004300 |
SNDCTL_COPR_RESET |
void |
0xCFB04301 |
SNDCTL_COPR_LOAD |
const struct copr_buffer * |
0xC0144302 |
SNDCTL_COPR_RDATA |
struct copr_debug_buf * |
// I-O |
0xC0144303 |
SNDCTL_COPR_RCODE |
struct copr_debug_buf * |
// I-O |
0x40144304 |
SNDCTL_COPR_WDATA |
const struct copr_debug_buf * |
0x40144305 |
SNDCTL_COPR_WCODE |
const struct copr_debug_buf * |
0xC0144306 |
SNDCTL_COPR_RUN |
struct copr_debug_buf * |
// I-O |
0xC0144307 |
SNDCTL_COPR_HALT |
struct copr_debug_buf * |
// I-O |
0x4FA44308 |
SNDCTL_COPR_SENDMSG |
const struct copr_msg * |
0x8FA44309 |
SNDCTL_COPR_RCVMSG |
struct copr_msg * |
0x80044D00 |
SOUND_MIXER_READ_VOLUME |
int * |
0x80044D01 |
SOUND_MIXER_READ_BASS |
int * |
0x80044D02 |
SOUND_MIXER_READ_TREBLE |
int * |
0x80044D03 |
SOUND_MIXER_READ_SYNTH |
int * |
0x80044D04 |
SOUND_MIXER_READ_PCM |
int * |
0x80044D05 |
SOUND_MIXER_READ_SPEAKER |
int * |
0x80044D06 |
SOUND_MIXER_READ_LINE |
int * |
0x80044D07 |
SOUND_MIXER_READ_MIC |
int * |
0x80044D08 |
SOUND_MIXER_READ_CD |
int * |
0x80044D09 |
SOUND_MIXER_READ_IMIX |
int * |
0x80044D0A |
SOUND_MIXER_READ_ALTPCM |
int * |
0x80044D0B |
SOUND_MIXER_READ_RECLEV |
int * |
0x80044D0C |
SOUND_MIXER_READ_IGAIN |
int * |
0x80044D0D |
SOUND_MIXER_READ_OGAIN |
int * |
0x80044D0E |
SOUND_MIXER_READ_LINE1 |
int * |
0x80044D0F |
SOUND_MIXER_READ_LINE2 |
int * |
0x80044D10 |
SOUND_MIXER_READ_LINE3 |
int * |
0x80044D1C |
SOUND_MIXER_READ_MUTE |
int * |
0x80044D1D |
SOUND_MIXER_READ_ENHANCE |
int * |
0x80044D1E |
SOUND_MIXER_READ_LOUD |
int * |
0x80044DFF |
SOUND_MIXER_READ_RECSRC |
int * |
0x80044DFE |
SOUND_MIXER_READ_DEVMASK |
int * |
0x80044DFD |
SOUND_MIXER_READ_RECMASK |
int * |
0x80044DFB |
SOUND_MIXER_READ_STEREODEVS |
int * |
0x80044DFC |
SOUND_MIXER_READ_CAPS |
int * |
0xC0044D00 |
SOUND_MIXER_WRITE_VOLUME |
int * |
// I-O |
0xC0044D01 |
SOUND_MIXER_WRITE_BASS |
int * |
// I-O |
0xC0044D02 |
SOUND_MIXER_WRITE_TREBLE |
int * |
// I-O |
0xC0044D03 |
SOUND_MIXER_WRITE_SYNTH |
int * |
// I-O |
0xC0044D04 |
SOUND_MIXER_WRITE_PCM |
int * |
// I-O |
0xC0044D05 |
SOUND_MIXER_WRITE_SPEAKER |
int * |
// I-O |
0xC0044D06 |
SOUND_MIXER_WRITE_LINE |
int * |
// I-O |
0xC0044D07 |
SOUND_MIXER_WRITE_MIC |
int * |
// I-O |
0xC0044D08 |
SOUND_MIXER_WRITE_CD |
int * |
// I-O |
0xC0044D09 |
SOUND_MIXER_WRITE_IMIX |
int * |
// I-O |
0xC0044D0A |
SOUND_MIXER_WRITE_ALTPCM |
int * |
// I-O |
0xC0044D0B |
SOUND_MIXER_WRITE_RECLEV |
int * |
// I-O |
0xC0044D0C |
SOUND_MIXER_WRITE_IGAIN |
int * |
// I-O |
0xC0044D0D |
SOUND_MIXER_WRITE_OGAIN |
int * |
// I-O |
0xC0044D0E |
SOUND_MIXER_WRITE_LINE1 |
int * |
// I-O |
0xC0044D0F |
SOUND_MIXER_WRITE_LINE2 |
int * |
// I-O |
0xC0044D10 |
SOUND_MIXER_WRITE_LINE3 |
int * |
// I-O |
0xC0044D1C |
SOUND_MIXER_WRITE_MUTE |
int * |
// I-O |
0xC0044D1D |
SOUND_MIXER_WRITE_ENHANCE |
int * |
// I-O |
0xC0044D1E |
SOUND_MIXER_WRITE_LOUD |
int * |
// I-O |
0xC0044DFF |
SOUND_MIXER_WRITE_RECSRC |
int * |
// I-O |
// <include/linux/umsdos_fs.h>
0x000004D2 |
UMSDOS_READDIR_DOS |
struct umsdos_ioctl * |
// I-O |
0x000004D3 |
UMSDOS_UNLINK_DOS |
const struct umsdos_ioctl * |
0x000004D4 |
UMSDOS_RMDIR_DOS |
const struct umsdos_ioctl * |
0x000004D5 |
UMSDOS_STAT_DOS |
struct umsdos_ioctl * |
// I-O |
0x000004D6 |
UMSDOS_CREAT_EMD |
const struct umsdos_ioctl * |
0x000004D7 |
UMSDOS_UNLINK_EMD |
const struct umsdos_ioctl * |
0x000004D8 |
UMSDOS_READDIR_EMD |
struct umsdos_ioctl * |
// I-O |
0x000004D9 |
UMSDOS_GETVERSION |
struct umsdos_ioctl * |
0x000004DA |
UMSDOS_INIT_EMD |
void |
0x000004DB |
UMSDOS_DOS_SETUP |
const struct umsdos_ioctl * |
0x000004DC |
UMSDOS_RENAME_DOS |
const struct umsdos_ioctl * |
// <include/linux/vt.h>
0x00005600 |
VT_OPENQRY |
int * |
0x00005601 |
VT_GETMODE |
struct vt_mode * |
0x00005602 |
VT_SETMODE |
const struct vt_mode * |
0x00005603 |
VT_GETSTATE |
struct vt_stat * |
0x00005604 |
VT_SENDSIG |
void |
0x00005605 |
VT_RELDISP |
int |
0x00005606 |
VT_ACTIVATE |
int |
0x00005607 |
VT_WAITACTIVE |
int |
0x00005608 |
VT_DISALLOCATE |
int |
0x00005609 |
VT_RESIZE |
const struct vt_sizes * |
0x0000560A |
VT_RESIZEX |
const 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_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 は 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 *
SIOCGIFCONF は struct ifconf *
を使用します。この
ifc_buf
フィールドは長さ
ifc_len
バイトのバッファーへのポインターです。
これにカーネルが struct
ifreq []
型のリストへ書き込みます。
SIOCSIFHWADDR
は型が以下のプロトコルに依存する入力ポインターを使用します:
Most protocols const struct ifreq *
AX.25 const char [AX25_ADDR_LEN]
TIOCLINUX は const 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
を含んでいません。
0x00000001 |
FDSETPRM |
FIBMAP |
0x00000002 |
FDDEFPRM |
FIGETBSZ |
0x00005382 |
CDROMAUDIOBUFSIZ |
SCSI_IOCTL_GET_IDLUN |
0x00005402 |
SNDCTL_TMR_START |
TCSETS |
0x00005403 |
SNDCTL_TMR_STOP |
TCSETSW |
0x00005404 |
SNDCTL_TMR_CONTINUE |
TCSETSF |