                              ioctl ֹ

                           1999 ǯ 10  19 
                       Michael Elizabeth Chastain
                            <mec@shout.net>


ͥ˿ ioctl ɲä硢<linux/ioctl.h> Ƥ
_IO ޥѤ褦ˤƤ

    _IO    ̵ ioctl
    _IOW   Ѱȼ ioctl (copy_from_user)
    _IOR   ɽФѰȼ ioctl (copy_to_user)
    _IOWR  ɽФѰѰξȼ ioctl

ֽߡפɽФפϡ礦ɥƥॳ write  read Ʊ͡
桼λǤ㤨СSET_FOO ioctl ϼºݤˤϥͥ뤬桼
֤ǡɤ߽ФȤˤʤޤ _IOW ˤʤǤ礦GET_FOO
ioctl ϼºݤˤϥͥ뤬桼֤˥ǡ񤭹ळȤˤʤޤ
_IOR ˤʤǤ礦

_IO, _IOW, _IOR, _IOWR ΰܤΰϡΥơ֥ʸޤ
μ̻ҤǤ̤Υɥ饤ФΤǡ¿Υɥ饤Ф
ʸ¾Υɥ饤ФȶѤƤޤ

ǥХѤΥɥ饤Ф񤤤ƤơʸɬפȤϡ32 
256 Ĥ ioctl ޥɤѰդǤ褦ʽʬʳĥΤ롢Ѥ
ʤʸǤΥեФѥåΥѥ
 Linus Torvalds Ф뤳Ȥǡ֥åϿǤޤޤϡ
<mec@shout.net> ˥᡼뤷Ƥ館С䤬Ͽޤ

_IO, _IOW, _IOR, _IOWR ܤΰϡ ioctl ̤뤿Υ
ֹǤ_IOW, _IOR, _IOWR λܤΰϡͥϤꡢ
ͥ뤫Ϥ줿ꤹǡηǤ (㤨 'int'  'struct foo')
ioctl  size_t ΰϤ줿ȻפäƤޤΤǡsizeof(arg) 
ܤΰȤϤȤʤ褦դƤ

᥸㡼ֹ̻ҤȤƻȤǥХ⤢ޤ줬դǤ
¤ꡢפǤ§ŪǡˤޤäʤǥХ⤢ޤ

δ˽ȤɤȤǤͳϼΤȤǤ

(1) ioctl Τǰդˤ뤳Ȥˤꡢ顼Υåڤˤʤޤ
    ץबְä̤ΥǥХ ioctl ȯԤƤ⡢ͽ۳ư
    ΤǤϤʤ顼ޤ

(2) 'strace' ӥɽ_IO, _IOW, _IOR, _IOWR 줿 ioctl
    ֹưŪ˸Ĥޤ (strace  make Ȥ linux/
    ioctlent.sh ȤץȤμưôޤ)

(3) ֹ椬դǤС'strace' ֹͭѤ̾˥ǥ
    Ǥޤ

(4) ioctl ֹݤˤδȤƤСioctl õͤ
    ñ grep Ǥޤ

(5) ˽äƤС桼֤ȥ֤ͥΤǥѥ᡼
    ԡ򤪤ʤѥɤ򡢥ɥ饤ФǻѤǤ褦ˤʤޤ

Υơ֥ϡLinux/i386 Υ桼֤鸫 ioctl ΰǤ
2.3.14 ޤǤΤۤȤɤΥɥ饤ФޤޤƤޤĤ礱Ƥ
ȤʬäƤޤ

Code    Seq#    󥯥롼ɥե    
========================================================
0x00    00-1F   linux/fs.h              硪
0x00    00-1F   scsi/scsi_ioctl.h       硪
0x00    00-1F   linux/fb.h              硪
0x00    00-1F   linux/wavefront.h       硪
0x02        linux/fd.h
0x03        linux/hdreg.h
0x04        linux/umsdos_fs.h
0x06        linux/lp.h
0x09        linux/md.h
0x12        linux/fs.h
                linux/blkpg.h
0x20        drivers/cdrom/cm206.h
0x22        scsi/sg.h
'#'     00-3F   IEEE 1394 ֥ƥ  ֥ƥѤΥ֥å
'1'     00-1F   <linux/timepps.h>       Ulrich Windl  PPS å
                                        < ftp://ftp.de.kernel.org/pub/linux/daemons/ntp/PPS/ >
'6'     00-10   <asm-i386/processor.h>  Intel IA32 ޥɹɥ饤
                                        <mailto:tigran@veritas.com>
'8'                                 SNP8023 ɥХ󥹥 NIC 
                                        <mailto:mcr@solidum.com>
'A'     00-1F   linux/apm_bios.h
'B'     C0-FF                           ɥХ󥹥 bbus
                                        <mailto:maassen@uni-freiburg.de>
'C'         linux/soundcard.h
'D'         asm-s390/dasd.h
'F'         linux/fb.h
'I'         linux/isdn.h
'J'     00-1F   drivers/scsi/gdth_ioctl.h
'K'         linux/kd.h
'L'     00-1F   linux/loop.h
'L'     E0-FF   linux/ppdd.h            Ź沽ǥǥХɥ饤
                                        < http://linux01.gwdg.de/~alatham/ppdd.html >
'M'         linux/soundcard.h       硪
'M'     00-1F   linux/isicom.h          硪
'N'     00-1F   drivers/sub/scanner.h
'P'         linux/soundcard.h
'Q'         linux/soundcard.h
'R'     00-1F   linux/random.h
'S'         linux/cdrom.h           硪
'S'     80-81   scsi/scsi_ioctl.h       硪
'S'     82-FF   scsi/scsi.h             硪
'T'         linux/soundcard.h       硪
'T'         asm-i386/ioctls.h       硪
'U'     00-EF   linux/drivers/usb/usb.h
'U'     F0-FF   drivers/usb/auerswald.c
'V'         linux/vt.h
'W'     00-1F   linux/watchdog.h        硪
'W'     00-1F   linux/wanrouter.h       硪
'X'         linux/xfs_fs.h          硪
'Y'         linux/cyclades.h
'a'                                 ATM on Linux
                                        < http://lrcwww.epfl.ch/linux-atm/magic.html >
'b'     00-FF                           bit3 vme ۥȥ֥å
                                        <mailto:natalia@nikhefk.nikhef.nl>
'c'     00-7F   linux/comstats.h        硪
'c'     00-7F   linux/coda.h            硪
'd'     00-1F   linux/devfs_fs.h        硪
'd'     00-DF   linux/video_decoder.h   硪
'd'     F0-FF   linux/digi1.h
'e'         linux/digi1.h           硪
'e'     00-1F   linux/video_encoder.h   硪
'e'     00-1F   net/irda/irtty.h        硪
'f'     00-1F   linux/ext2_fs.h
'h'     00-7F                           Charon ե륷ƥ
                                        <mailto:zapman@interlan.net>
'i'     00-3F   linux/i2o.h
'j'     00-3F   linux/joystick.h
'k'         asm-sparc/kbio.h
                asm-sparc64/kbio.h
'l'     00-3F   linux/tcfs_fs.h         ƩŪŹ沽ե륷ƥ
                                        < http://mikonos.dia.unisa.it/tcfs >
'l'     40-7F   linux/udf_fs_i.h        ȯ桧
                                        < http://www.trylinux.com/projects/udf/ >
'm'         linux/mtio.h            硪
'm'         linux/soundcard.h       硪
'm'         linux/synclink.h        硪
'm'     00-1F   net/irda/irmod.h        硪
'n'     00-7F   linux/ncp_fs.h
'n'     E0-FF   video/matrox.h          matroxfb
'p'     00-3F   linux/mc146818rtc.h
'p'     40-7F   linux/nvram.h
'p'     80-9F                           桼 parport
                                        <mailto:tim@cyberelk.net>
'q'     00-1F   linux/videotext.h       硪
'q'     80-FF                           Internet PhoneJACK, Internet LineJACK
                                        < http://www.quicknet.net >
'r'     00-1F   linux/msdos_fs.h
's'         linux/cdk.h
't'     00-7F   linux/if_ppp.h
't'     80-8F   linux/isdn_ppp.h
'u'     00-1F   linux/smb_fs.h
'v'     00-1F   linux/ext2_fs.h         硪
'v'         linux/videodev.h        硪
'w'                                 CERN SCI ɥ饤
'y'     00-1F                           ѥåȥ١桼٥̿
                                        <mailto:zapman@interlan.net>
'z'     00-3F                           CAN Х
                                        <mailto:hdstich@connectu.ulm.circular.de>
'z'     40-7F                           CAN Х
                                        <mailto:oe@port.de>
0x80    00-1F   linux/fb.h
0x89    00-06   asm-i386/sockios.h
0x89    0B-DF   linux/sockios.h
0x89    E0-EF   linux/sockios.h         SIOCPROTOPRIVATE ϰ
0x89    F0-FF   linux/sockios.h         SIOCDEVPRIVATE ϰ
0x8B        linux/wireless.h
0x8C    00-3F                           WiNRADiO ɥ饤
                                        < http://www.proximity.com.au/~brian/winradio/ >
0x90    00      drivers/cdrom/sbpcd.h
0x93    60-7F   linux/auto_fs.h
0x99    00-0F                           537-Addinboard ɥ饤
                                        <mailto:buk@buks.ipn.de>
0xA0        linux/sdp/sdp.h         Industrial Device Project
                                        <mailto:kenji@bitgate.com>
0xA3    80-8F   Port ACL                ȯ桧
                                        <mailto:tlewis@mindspring.com>
0xA3    90-9F   linux/dtlk.h
0xAB    00-1F   linux/nbd.h
0xAC    00-1F   linux/raw.h
0xAD    00      Netfilter ǥХ      ȯ桧
                                        <mailto:rusty@rustcorp.com.au>
0xB0        RATIO ǥХ          ȯ桧
                                        <mailto:vgo@ratio.de>
0xB1    00-1F   PPPoX                   <mailto:mostrows@styx.uwaterloo.ca>
0xCB    00-1F   CBM ꥢ IEC Х   ȯ桧
                                        <mailto:michael.klein@puffin.lb.shuttle.de>
0xDD    00-3F   ZFCP ǥХɥ饤   drivers/s390/scsi/ 
                                        <mailto:aherrman@de.ibm.com>
