Ioctl List 1.3.35
Sun 22 Oct 1995
Michael Elizabeth Chastain
<mec@duracef.shout.net>



// Copyright

Ioctl List 1.3.35 is copyright 1995 by Michael Elizabeth Chastain.
It is licensed under the Gnu Public License, Version 2.



// Change Log

1.3.35	437 ioctls.
	'linux/fd.h' now have unique numbers.
	'linux/if_ppp.h' completely revised.
	'linux/random.h' ioctls added.
	Partial list of internal ioctls.

1.3.27	421 ioctls.
	Type information for non-pointer args.
	SIOCDEVPRIVATE, SIOCPROTOPRIVATE ioctls.
	Descriptions of extended arguments.

1.2.9	365 ioctls.
	First public version.



// Introduction

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

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 incomplete.  It does not include:

    -- Ioctls defined internal to the kernel ('scsi_ioctl.h').
    -- Ioctls defined in modules distributed separately from the kernel.

And, of course, I may have errors and omissions.

Please e-mail changes and comments to <mec@duracef.shout.net>.  I am
particularly interested in loadable modules which define their own
ioctls.  If you know of such a module, tell me where I can ftp it, and
I'll include its ioctls in my next release.



// 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			const struct winsize *
0x00005414  TIOCSWINSZ			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 temios *
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 *
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 *
0x00005317  CDROMPLAYBLK		const struct cdrom_blk *

// <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>
0x00000241  FDCLRPRM			void
0x00000242  FDSETPRM			const struct floppy_struct *
0x00000243  FDDEFPRM			const struct floppy_struct *
0x00000204  FDGETPRM			struct floppy_struct *
0x00000205  FDMSGON			void
0x00000206  FDMSGOFF			void
0x00000247  FDFMTBEG			void
0x00000248  FDFMTTRK			const struct format_descr *
0x00000249  FDFMTEND			void
0x0000024A  FDSETEMSGTRESH		int
0x0000024B  FDFLUSH			void
0x0000024C  FDSETMAXERRS		const struct floppy_max_errors *
0x0000020E  FDGETMAXERRS		struct floppy_max_errors *
0x0000020F  FDGETDRVTYP			struct { char [16]; } *
0x00000250  FDSETDRVPRM			const struct floppy_drive_params *
0x00000211  FDGETDRVPRM			struct floppy_drive_params *
0x00000212  FDGETDRVSTAT		struct floppy_drive_struct *
0x00000213  FDPOLLDRVSTAT		struct floppy_drive_struct *
0x00000254  FDRESET			int
0x00000215  FDGETFDCSTAT		struct floppy_fdc_state *
0x00000256  FDWERRORCLR			void
0x00000217  FDWERRORGET			struct floppy_write_errors *
0x00000258  FDRAWCMD			struct floppy_raw_cmd [] // MORE // I-O
0x00000259  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>
0x8004745A  PPPIOCGFLAGS		int *
0x40047459  PPPIOCSFLAGS		const int *
0x80047458  PPPIOCGASYNCMAP		int *
0x40047457  PPPIOCSASYNCMAP		const int *
0x80047456  PPPIOCGUNIT			int *
0x80047455  PPPIOCGRASYNCMAP		void
0x40047454  PPPIOCSRASYNCMAP		const int *
0x80047453  PPPIOCGMRU			void
0x40047452  PPPIOCSMRU			const int *
0x40047451  PPPIOCSMAXCID		const int *
0x80207450  PPPIOCGXASYNCMAP		struct { int [8]; } *
0x4020744F  PPPIOCSXASYNCMAP		const struct { int [8]; } *
0x0000744E  PPPIOCXFERUNIT		void
0x400C744D  PPPIOCSCOMPRESS		const struct ppp_option_data *	// MORE
0xC008744C  PPPIOCGNPMODE		void
0x4008744B  PPPIOCSNPMODE		void
0x80047441  PPPIOCGDEBUG		int *
0x40047440  PPPIOCSDEBUG		const int *
0x8008743F  PPPIOCGIDLE			int *
0x000089F0  SIOCGPPPSTATS		struct ifreq *		// MORE // I-O
0x000089F1  SIOCGPPPVER			struct ifreq *		// MORE // I-O
0x000089F2  SIOCGPPPCSTATS		struct ifreq *		// MORE // I-O

// <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
0x00004B6D  PIO_FONTRESET		void
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/random.h>
0x01080000  RNDGETENTCNT		int *
0x01080001  RNDADDTOENTCNT		const int *
0x01080002  RNDGETPOOL			struct { int [2]; } *	// MORE // I-O

// <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
0x8010500C  SNDCTL_DSP_GETOSPACE	struct audio_buf_info *
0x8010500D  SNDCTL_DSP_GETISPACE	struct audio_buf_info *
0x0000500E  SNDCTL_DSP_NONBLOCK		void
0x8004500F  SNDCTL_DSP_GETCAPS		int *
0x80045010  SNDCTL_DSP_GETTRIGGER	int *
0x40045010  SNDCTL_DSP_SETTRIGGER	const int *
0x800C5011  SNDCTL_DSP_GETIPTR		struct count_info *
0x800C5012  SNDCTL_DSP_GETOPTR		struct count_info *
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 an 'struct floppy raw_cmd []'.  For each element, 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'.  If 'flags &
FD_RAW_MORE' is zero, then this is the last array element.

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.

PPPIOCSCOMPRESS takes an input pointer 'const struct ppp_option_data *'.
'ptr' points to an input buffer of length 'nb', with a maximum length
of 'CCP_MAX_OPTION_LENGTH'.

RNDGETPOOL takes a pointer 'struct { int[2]; } *'.  The second input
word is a count, maximum value 128.  It writes an array of 'count' words
immediately after the two output words.

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 []'.

SIOCGPPPSTATS, SIOCGPPPVER, and SIOCGPPPCSTATS take a 'struct ifreq *'.
The 'ifr_data' field is a pointer to another structure as follows:

	    SIOCGPPPSTATS		struct ppp_stats *
	    SIOCGPPPVER			char *	// Nul-terminated string
	    SIOCGPPPCSTATS		struct ppp_comp_stats *

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.

0x00005382  CDROMAUDIOBUFSIZ		SCSI_IOCTL_GET_IDLUN
0x00005402  SNDCTL_TMR_START		TCSETS
0x00005403  SNDCTL_TMR_STOP		TCSETSW
0x00005404  SNDCTL_TMR_CONTINUE		TCSETSF



// Internal ioctls

This is a partial list of ioctls defined internally in the kernel.

	drivers/block/floppy.c		OLDFD* (these will go away eventually)
	drivers/block/ide-cd.c		0x1234
	drivers/block/sjcd.c		0xABCD
	drivers/scsi/scsi_ioctl.h	Many!
	drivers/scsi/sg.h		SG_SET_TIMEOUT, SG_GET_TIMEOUT
	drivers/sound/mpu401.c		1
	drivers/sound/soundcard.c	1

