Tutorials Point

  Unix for Beginners
  Unix Shell Programming
  Advanced Unix
  Unix Useful References
  Unix Useful Resources
  Selected Reading

Copyright © 2014 by tutorialspoint

  Home     References     Discussion Forums     About TP  

ioctl_list() - Unix, Linux System Call

previous next AddThis Social Bookmark Button



ioctl_list - list of ioctl calls in Linux/i386 kernel


This is Ioctl List 1.3.27, a list of ioctl calls in Linux/i386 kernel 1.3.27. It contains 421 ioctls from /usr/include/{asm,linux}/*.h. For each ioctl, its numerical value, its name, and its argument type are given.

An argument type of ’const struct foo *’ means the argument is input to the kernel. ’struct foo *’ means the kernel outputs the argument. If the kernel uses the argument for both input and output, this is marked with // I-O.

Some ioctls take more arguments or return more values than a single structure. These are marked // MORE and documented further in a separate section.

This list is very incomplete. Please e-mail changes and comments to <mec@duracef.shout.net>.


Ioctl command values are 32-bit constants. In principle these constants are completely arbitrary, but people have tried to build some structure into them.

The old Linux situation was that of mostly 16-bit constants, where the last byte is a serial number, and the preceding byte(s) give a type indicating the driver. Sometimes the major number was used: 0x03 for the HDIO_* ioctls, 0x06 for the LP* ioctls. And sometimes one or more ASCII letters were used. For example, TCGETS has value 0x00005401, with 0x54 = ’T’ indicating the terminal driver, and CYGETTIMEOUT has value 0x00435906, with 0x43 0x59 = ’C’ ’Y’ indicating the cyclades driver.

Later (0.98p5) some more information was built into the number. One has 2 direction bits (00: none, 01: write, 10: read, 11: read/write) followed by 14 size bits (giving the size of the argument), followed by an 8-bit type (collecting the ioctls in groups for a common purpose or a common driver), and an 8-bit serial number.

The macros describing this structure live in <asm/ioctl.h> and are _IO(type,nr) and {_IOR,_IOW,_IOWR}(type,nr,size). They use sizeof(size) so that size is a misnomer here: this third parameter is a data type.

Note that the size bits are very unreliable: in lots of cases they are wrong, either because of buggy macros using sizeof(sizeof(struct)), or because of legacy values.

Thus, it seems that the new structure only gave disadvantages: it does not help in checking, but it causes varying values for the various architectures.


Decent ioctls return 0 on success and -1 on error, while any output value is stored via the argument. However, quite a few ioctls in fact return an output value. This is not yet indicated below.

// Main table.

// <include/asm-i386/socket.h> 0x00008901 FIOSETOWN                   const int * 0x00008902 SIOCSPGRP                   const int * 0x00008903 FIOGETOWN                   int * 0x00008904 SIOCGPGRP                   int * 0x00008905 SIOCATMARK                  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                  int * 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/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.

Some ioctl’s take a pointer to a structure which contains additional pointers. These are documented here in alphabetical order.

CDROMREADAUDIO takes an input pointer ’const struct cdrom_read_audio *’. The ’buf’ field points to an output buffer of length ’nframes * CD_FRAMESIZE_RAW’.

CDROMREADCOOKED, CDROMREADMODE1, CDROMREADMODE2, and CDROMREADRAW take an input pointer ’const struct cdrom_msf *’. They use the same pointer as an output pointer to ’char []’. The length varies by request. For CDROMREADMODE1, most drivers use ’CD_FRAMESIZE’, but the Optics Storage driver uses ’OPT_BLOCKSIZE’ instead (both have the numerical value 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, and EQL_SETMASTERCFG take a ’struct ifreq *’. The ’ifr_data’ field is a pointer to another structure as follows:

         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 takes a ’struct floppy raw_cmd *’. If ’flags & FD_RAW_WRITE’ is non-zero, then ’data’ points to an input buffer of length ’length’. If ’flags & FD_RAW_READ’ is non-zero, then ’data’ points to an output buffer of length ’length’.

GIO_FONTX and PIO_FONTX take a ’struct console_font_desc *’ or a ’const struct console_font_desc *’, respectively. ’chardata’ points to a buffer of ’char [charcount]’. This is an output buffer for GIO_FONTX and an input buffer for PIO_FONTX.

GIO_UNIMAP and PIO_UNIMAP take a ’struct unimapdesc *’ or a ’const struct unimapdesc *’, respectively. ’entries’ points to a buffer of ’struct unipair [entry_ct]’. This is an output buffer for GIO_UNIMAP and an input buffer for PIO_UNIMAP.

KDADDIO, KDDELIO, KDDISABIO, and KDENABIO enable or disable access to I/O ports. They are essentially alternate interfaces to ’ioperm’.

KDMAPDISP and KDUNMAPDISP enable or disable memory mappings or I/O port access. They are not implemented in the kernel.

SCSI_IOCTL_PROBE_HOST takes an input pointer ’const int *’, which is a length. It uses the same pointer as an output pointer to a ’char []’ buffer of this length.

SIOCADDRT and SIOCDELRT take an input pointer whose type depends on the protocol:

         Most protocols              const struct rtentry *          AX.25                       const struct ax25_route *          NET/ROM                     const struct nr_route_struct *

SIOCGIFCONF takes a ’struct ifconf *’. The ’ifc_buf’ field points to a buffer of length ’ifc_len’ bytes, into which the kernel writes a list of type ’struct ifreq []’.

SIOCSIFHWADDR takes an input pointer whose type depends on the protocol:

         Most protocols              const struct ifreq *          AX.25                       const char [AX25_ADDR_LEN]

TIOCLINUX takes a ’const char *’. It uses this to distinguish several independent sub-cases. In the table below, ’N + foo’ means ’foo’ after an N-byte pad. ’struct selection’ is implicitly defined in ’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

This list does not include ioctls in the range SIOCDEVPRIVATE and SIOCPROTOPRIVATE.

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

previous next Printer Friendly