Blob Blame History Raw
.\" Ioctl List 1.3.27 is copyright 1995 by Michael Elizabeth Chastain.
.\" Michael Elizabeth Chastain
.\" <mec@duracef.shout.net>
.\"
.\" %%%LICENSE_START(GPLv2_MISC)
.\" It is licensed under the GNU General Public License, Version 2.
.\" %%%LICENSE_END
.\"
.\" Ioctl List 1.3.27
.\" Sun 17 Sep 1995
.\"
.\" // Copyright
.\"
.\"
.\"
.\" // Change Log
.\"
.\" 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.
.\"
.\"
.\" 2007-12-29 Alain Portal <aportal@univ-montp2.fr> and Michael Kerrisk
.\"     <mtk.manpages@gmail.com>:
.\"          Various formatting improvements
.\"
.TH IOCTL_LIST 2 2017-09-15 "Linux" "Linux Programmer's Manual"
.SH NAME
ioctl_list \- list of ioctl calls in Linux/i386 kernel
.SH DESCRIPTION
This is Ioctl List 1.3.27, a list of ioctl calls in Linux/i386 kernel
1.3.27.
It contains 421 ioctls from
.IR </usr/include/{asm,linux}/*.h> .
For each ioctl, its numerical value, its name, and its argument
type are given.
.PP
An argument type of
.I "const struct foo\ *"
means the argument is input to the kernel.
.I "struct foo\ *"
means the kernel outputs the argument.
If the kernel uses the argument for both input and output, this is
marked with \fI//\ I-O\fP.
.PP
Some ioctls take more arguments or return more values than a single
structure.
These are marked \fI//\ MORE\fP and documented further in a
separate section.
.PP
This list is very incomplete.
.SS ioctl structure
.\" added two sections - aeb
Ioctl command values are 32-bit constants.
In principle these constants are completely arbitrary, but people have
tried to build some structure into them.
.PP
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
.B HDIO_*
ioctls, 0x06 for the
.B LP*
ioctls.
And sometimes
one or more ASCII letters were used.
For example,
.B TCGETS
has value
0x00005401, with 0x54 = \(aqT\(aq indicating the terminal driver, and
.B CYGETTIMEOUT
has value 0x00435906, with 0x43 0x59 = \(aqC\(aq \(aqY\(aq
indicating the cyclades driver.
.PP
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.
.PP
The macros describing this structure live in
.I <asm/ioctl.h>
and are
.B _IO(type,nr)
and
.BR "{_IOR,_IOW,_IOWR}(type,nr,size)" .
They use
.I sizeof(size)
so that size is a
misnomer here: this third argument is a data type.
.PP
Note that the size bits are very unreliable: in lots of cases
they are wrong, either because of buggy macros using
.IR sizeof(sizeof(struct)) ,
or because of legacy values.
.PP
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.
.SH RETURN VALUE
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.
.PP
// Main table.
.PP
// <include/asm-i386/socket.h>
.TS
l l l.
0x00008901	FIOSETOWN	const int *
0x00008902	SIOCSPGRP	const int *
0x00008903	FIOGETOWN	int *
0x00008904	SIOCGPGRP	int *
0x00008905	SIOCATMAR	int *
0x00008906	SIOCGSTAMP	timeval *
.TE
.sp 1
// <include/asm-i386/termios.h>
.TS
l l l l.
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 *
.TE
.\" Some tables are split into two or more to avoid the warning:
.\" "table wider than line width".  Some lines are to long to fit
.\" on one line on an 80 columns console
.TS
l l l.
0x0000545A	TIOCSERGETMULTI	struct serial_multiport_struct *
0x0000545B	TIOCSERSETMULTI	const struct serial_multiport_struct *
.TE
.sp 1
// <include/linux/ax25.h>
.TS
l l l l.
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
.TE
.TS
l l l.
0x000089E6	SIOCAX25SETPARMS	const struct ax25_parms_struct *
.TE
.sp 1
// <include/linux/cdk.h>
.TS
l l l.
0x00007314	STL_BINTR	void
0x00007315	STL_BSTART	void
0x00007316	STL_BSTOP	void
0x00007317	STL_BRESET	void
.TE
.sp 1
// <include/linux/cdrom.h>
.TS
l l l.
0x00005301	CDROMPAUSE	void
0x00005302	CDROMRESUME	void
0x00005303	CDROMPLAYMSF	const struct cdrom_msf *
0x00005304	CDROMPLAYTRKIND	const struct cdrom_ti *
0x00005305	CDROMREADTOCHDR	struct cdrom_tochdr *
.TE
.TS
l l l l.
0x00005306	CDROMREADTOCENTRY	struct cdrom_tocentry *	// I-O
.TE
.TS
l l l l.
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
.TE
.TS
l l l l.
0x00005310	CDROMMULTISESSION	struct cdrom_multisession *	// I-O
.TE
.TS
l l l l.
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 *
.TE
.sp 1
// <include/linux/cm206.h>
.TS
l l l.
0x00002000	CM206CTL_GET_STAT	int
0x00002001	CM206CTL_GET_LAST_STAT	int
.TE
.sp 1
// <include/linux/cyclades.h>
.TS
l l l.
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
.TE
.sp 1
// <include/linux/fd.h>
.TS
l l l.
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 *
.TE
.TS
l l l l.
0x0000001E	FDRAWCMD	struct floppy_raw_cmd *	// MORE // I-O
0x00000028	FDTWADDLE	void
.TE
.sp 1
// <include/linux/fs.h>
.TS
l l l l.
0x0000125D	BLKROSET	const int *
0x0000125E	BLKROGET	int *
0x0000125F	BLKRRPART	void
0x00001260	BLKGETSIZE	unsigned long *
0x00001261	BLKFLSBUF	void
0x00001262	BLKRASET	unsigned long
0x00001263	BLKRAGET	unsigned long *
0x00000001	FIBMAP	int *	// I-O
0x00000002	FIGETBSZ	int *
0x80086601	FS_IOC_GETFLAGS	int *
0x40086602	FS_IOC_SETFLAGS	int *
0x80087601	FS_IOC_GETVERSION	int *
0x40087602	FS_IOC_SETVERSION	int *
0xC020660B	FS_IOC_FIEMAP	struct fiemap *
0x40086602	FS_IOC32_SETFLAGS	int *
0x40086602	FS_IOC32_SETFLAGS	int *
0x80047601	FS_IOC32_GETVERSION	int *
0x40047602	FS_IOC32_SETVERSION	int *
.TE
.sp 1
// <include/linux/hdreg.h>
.TS
l l l l.
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
.TE
.sp 1
// <include/linux/if_eql.h>
.TS
l l l l.
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
.TE
.sp 1
// <include/linux/if_plip.h>
.TS
l l l l.
0x000089F0	SIOCDEVPLIP	struct ifreq *	// I-O
.TE
.sp 1
// <include/linux/if_ppp.h>
.TS
l l l.
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 *
.TE
.sp 1
// <include/linux/ipx.h>
.TS
l l l.
0x000089E0	SIOCAIPXITFCRT	const char *
0x000089E1	SIOCAIPXPRISLT	const char *
0x000089E2	SIOCIPXCFGDATA	struct ipx_config_data *
.TE
.sp 1
// <include/linux/kd.h>
.TS
l l l.
0x00004B60	GIO_FONT	struct { char [8192]; } *
0x00004B61	PIO_FONT	const struct { char [8192]; } *
.TE
.TS
l2 l2 l2 l.
0x00004B6B	GIO_FONTX	struct console_font_desc *	// MORE // I-O
0x00004B6C	PIO_FONTX	const struct console_font_desc *	//MORE
.TE
.TS
l l l.
0x00004B70	GIO_CMAP	struct { char [48]; } *
0x00004B71	PIO_CMAP	const struct { char [48]; }
.TE
.TS
l l l l.
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]; } *
.TE
.TS
l l l.
0x00004B41	PIO_SCRNMAP	const struct { char [E_TABSZ]; } *
0x00004B69	GIO_UNISCRNMAP	struct { short [E_TABSZ]; } *
0x00004B6A	PIO_UNISCRNMAP	const struct { short [E_TABSZ]; } *
.TE
.TS
l l l l.
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
.TE
.sp 1
// <include/linux/lp.h>
.TS
l l l.
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 *
.TE
.sp 1
// <include/linux/mroute.h>
.TS
l l l l.
0x000089E0	SIOCGETVIFCNT	struct sioc_vif_req *	// I-O
0x000089E1	SIOCGETSGCNT	struct sioc_sg_req *	// I-O
.TE
.sp 1
// <include/linux/msdos_fs.h> see
.BR ioctl_fat (2)
.TS
l l l l.
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 *
0x80047213	FAT_IOCTL_GET_VOLUME_ID	__u32 *
.TE
.sp 1
// <include/linux/mtio.h>
.TS
l l l.
0x40086D01	MTIOCTOP	const struct mtop *
0x801C6D02	MTIOCGET	struct mtget *
0x80046D03	MTIOCPOS	struct mtpos *
0x80206D04	MTIOCGETCONFIG	struct mtconfiginfo *
0x40206D05	MTIOCSETCONFIG	const struct mtconfiginfo *
.TE
.sp 1
// <include/linux/netrom.h>
.TS
l l l l.
0x000089E0	SIOCNRGETPARMS	struct nr_parms_struct *	// I-O
0x000089E1	SIOCNRSETPARMS	const struct nr_parms_struct *
0x000089E2	SIOCNRDECOBS	void
0x000089E3	SIOCNRRTCTL	const int *
.TE
.sp 1
// <include/uapi/linux/wireless.h>
.br
// This API is deprecated.
.br
// It is being replaced by nl80211 and cfg80211.
See
.br
//
.I https://wireless.wiki.kernel.org/en/developers/documentation/nl80211
.TS
l l l.
x00008b00	SIOCSIWCOMMIT	struct iwreq *
x00008b01	SIOCGIWNAME	struct iwreq *
x00008b02	SIOCSIWNWID	struct iwreq *
x00008b03	SIOCGIWNWID	struct iwreq *
x00008b04	SIOCSIWFREQ	struct iwreq *
x00008b05	SIOCGIWFREQ	struct iwreq *
x00008b06	SIOCSIWMODE	struct iwreq *
x00008b07	SIOCGIWMODE	struct iwreq *
x00008b08	SIOCSIWSENS	struct iwreq *
x00008b09	SIOCGIWSENS	struct iwreq *
x00008b0a	SIOCSIWRANGE	struct iwreq *
x00008b0b	SIOCGIWRANGE	struct iwreq *
x00008b0c	SIOCSIWPRIV	struct iwreq *
x00008b0d	SIOCGIWPRIV	struct iwreq *
x00008b0e	SIOCSIWSTATS	struct iwreq *
x00008b0f	SIOCGIWSTATS	struct iwreq *
x00008b10	SIOCSIWSPY	struct iwreq *
x00008b11	SIOCGIWSPY	struct iwreq *
x00008b12	SIOCSIWTHRSPY	struct iwreq *
x00008b13	SIOCGIWTHRSPY	struct iwreq *
x00008b14	SIOCSIWAP	struct iwreq *
x00008b15	SIOCGIWAP	struct iwreq *
x00008b17	SIOCGIWAPLIST	struct iwreq *
x00008b18	SIOCSIWSCAN	struct iwreq *
x00008b19	SIOCGIWSCAN	struct iwreq *
x00008b1a	SIOCSIWESSID	struct iwreq *
x00008b1b	SIOCGIWESSID	struct iwreq *
x00008b1c	SIOCSIWNICKN	struct iwreq *
x00008b1d	SIOCGIWNICKN	struct iwreq *
x00008b20	SIOCSIWRATE	struct iwreq *
x00008b21	SIOCGIWRATE	struct iwreq *
x00008b22	SIOCSIWRTS	struct iwreq *
x00008b23	SIOCGIWRTS	struct iwreq *
x00008b24	SIOCSIWFRAG	struct iwreq *
x00008b25	SIOCGIWFRAG	struct iwreq *
x00008b26	SIOCSIWTXPOW	struct iwreq *
x00008b27	SIOCGIWTXPOW	struct iwreq *
x00008b28	SIOCSIWRETRY	struct iwreq *
x00008b29	SIOCGIWRETRY	struct iwreq *
x00008b2a	SIOCSIWENCODE	struct iwreq *
x00008b2b	SIOCGIWENCODE	struct iwreq *
x00008b2c	SIOCSIWPOWER	struct iwreq *
x00008b2d	SIOCGIWPOWER	struct iwreq *
x00008b30	SIOCSIWGENIE	struct iwreq *
x00008b31	SIOCGIWGENIE	struct iwreq *
x00008b16	SIOCSIWMLME	struct iwreq *
x00008b32	SIOCSIWAUTH	struct iwreq *
x00008b33	SIOCGIWAUTH	struct iwreq *
x00008b34	SIOCSIWENCODEEXT	struct iwreq *
x00008b35	SIOCGIWENCODEEXT	struct iwreq *
x00008b36	SIOCSIWPMKSA	struct iwreq *
.TE
.sp 1
// <include/linux/sbpcd.h>
.TS
l l l.
0x00009000	DDIOCSDBG	const int *
0x00005382	CDROMAUDIOBUFSIZ	int
.TE
.sp 1
// <include/linux/scc.h>
.TS
l l l l.
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 *
.TE
.sp 1
// <include/linux/scsi.h>
.TS
l l l.
0x00005382	SCSI_IOCTL_GET_IDLUN       struct { int [2]; } *
0x00005383	SCSI_IOCTL_TAGGED_ENABLE   void
0x00005384	SCSI_IOCTL_TAGGED_DISABLE  void
.TE
.TS
l l l l.
0x00005385	SCSI_IOCTL_PROBE_HOST	const int *	// MORE
.TE
.sp 1
// <include/linux/smb_fs.h>
.TS
l l l.
0x80027501	SMB_IOC_GETMOUNTUID	uid_t *
.TE
.sp 1
// <include/uapi/linux/sockios.h> see
.BR netdevice (7)
.PP
.TS
l l l l.
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 *
.TE
.TS
l l l l.
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 *
.TE
.sp 1
// <include/linux/soundcard.h>
.TS
l l l.
0x00005100	SNDCTL_SEQ_RESET	void
0x00005101	SNDCTL_SEQ_SYNC	void
.TE
.TS
l l l l.
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
.TE
.TS
l l l.
0x40285107	SNDCTL_FM_LOAD_INSTR	const struct sbi_instrument *
.TE
.TS
l l l l.
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
.TE
.TS
l l l.
0x40085112	SNDCTL_SEQ_OUTOFBAND	const struct seq_event_rec *
.TE
.TS
l l l l.
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 *
.TE
.TS
l l l l.
0xC0216D02	SNDCTL_MIDI_MPUCMD	struct mpu_command_rec *	// I-O
.TE
.TS
l l l l.
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
.TE
.TS
l l l.
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 *
.TE
.TS
l l l l.
0xC0144302	SNDCTL_COPR_RDATA	struct copr_debug_buf *	// I-O
0xC0144303	SNDCTL_COPR_RCODE	struct copr_debug_buf *	// I-O
.TE
.TS
l l l.
0x40144304	SNDCTL_COPR_WDATA	const struct copr_debug_buf *
0x40144305	SNDCTL_COPR_WCODE	const struct copr_debug_buf *
.TE
.TS
l l l l.
0xC0144306	SNDCTL_COPR_RUN	struct copr_debug_buf *	// I-O
0xC0144307	SNDCTL_COPR_HALT	struct copr_debug_buf *	// I-O
.TE
.TS
l l l.
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 *
.TE
.TS
l l l l.
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
.TE
.sp 1
// <include/linux/timerfd.h> see
.BR timerfd_create (2)
.TS
l l l l.
0x40085400	TFD_IOC_SET_TICKS	uint64_t *
.TE
.sp 1
// <include/linux/umsdos_fs.h>
.TS
l l l l.
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 *
.TE
.sp 1
// <include/linux/vt.h>
.TS
l l l.
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 *
.TE
.sp 1
// More arguments.
Some ioctl's take a pointer to a structure which contains additional
pointers.
These are documented here in alphabetical order.
.PP
.B CDROMREADAUDIO
takes an input pointer
.IR "const struct cdrom_read_audio\ *" .
The
.I buf
field points to an output buffer of length
.IR "nframes\ * CD_FRAMESIZE_RAW" .
.PP
.BR CDROMREADCOOKED ,
.BR CDROMREADMODE1 ,
.BR CDROMREADMODE2 ,
and
.B CDROMREADRAW
take an input pointer
.IR "const struct cdrom_msf\ *" .
They use the same pointer as an output pointer to
.IR "char []" .
The length varies by request.
For
.BR CDROMREADMODE1 ,
most drivers use CD_FRAMESIZE, but the Optics Storage
driver uses OPT_BLOCKSIZE instead (both have the numerical value
2048).
.PP
.nf
    CDROMREADCOOKED    char [CD_FRAMESIZE]
    CDROMREADMODE1     char [CD_FRAMESIZE or OPT_BLOCKSIZE]
    CDROMREADMODE2     char [CD_FRAMESIZE_RAW0]
    CDROMREADRAW       char [CD_FRAMESIZE_RAW]
.fi
.PP
.BR EQL_ENSLAVE ,
.BR EQL_EMANCIPATE ,
.BR EQL_GETSLAVECFG ,
.BR EQL_SETSLAVECFG ,
.BR EQL_GETMASTERCFG ,
and
.B EQL_SETMASTERCFG
take a
.IR "struct ifreq\ *" .
The
.I ifr_data
field is a pointer to another structure as follows:
.PP
.nf
    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 *
.fi
.PP
.B FDRAWCMD
takes a
.IR "struct floppy raw_cmd\ *" .
If
.I flags & FD_RAW_WRITE
is nonzero, then
.I data
points to an input buffer of length
.IR length .
If
.I flags & FD_RAW_READ
is nonzero, then
.I data
points to an output buffer of length
.IR length .
.PP
.B GIO_FONTX
and
.B PIO_FONTX
take a
.I struct console_font_desc\ *
or a
.IR "const struct console_font_desc\ *" ,
respectively.
.I chardata
points to a buffer of
.IR "char [charcount]" .
This is an output buffer for
.B GIO_FONTX
and an input buffer for
.BR PIO_FONTX .
.PP
.B GIO_UNIMAP
and
.B PIO_UNIMAP
take a
.I "struct unimapdesc\ *"
or a
.IR "const struct unimapdesc\ *" ,
respectively.
.I entries
points to a buffer of
.IR "struct unipair [entry_ct]" .
This is an output buffer for
.B GIO_UNIMAP
and an input buffer for
.BR PIO_UNIMAP .
.PP
KDADDIO, KDDELIO, KDDISABIO, and KDENABIO enable or disable access to
I/O ports.
They are essentially alternate interfaces to 'ioperm'.
.PP
.B KDMAPDISP
and
.B KDUNMAPDISP
enable or disable memory mappings or I/O port access.
They are not implemented in the kernel.
.PP
.B SCSI_IOCTL_PROBE_HOST
takes an input pointer
.IR "const int\ *" ,
which is a length.
It uses the same pointer as an output pointer to a
.I char []
buffer of this length.
.PP
.B SIOCADDRT
and
.B SIOCDELRT
take an input pointer whose type depends on
the protocol:
.PP
.nf
    Most protocols      const struct rtentry *
    AX.25               const struct ax25_route *
    NET/ROM             const struct nr_route_struct *
    INET6               const struct in6_rtmsg *
.fi
.PP
.B SIOCGIFCONF
takes a
.IR "struct ifconf\ *" .
The
.I ifc_buf
field points to a buffer of length
.I ifc_len
bytes, into which the kernel writes a list of type
.IR "struct ifreq []" .
.PP
.B SIOCSIFHWADDR
takes an input pointer whose type depends on the protocol:
.PP
.nf
    Most protocols      const struct ifreq *
    AX.25               const char [AX25_ADDR_LEN]
.fi
.PP
.B TIOCLINUX
takes a
.IR "const char\ *" .
It uses this to distinguish several
independent subcases.
In the table below,
.I N + foo
means
.I foo
after an N-byte pad.
.I struct selection
is implicitly defined in
.IR drivers/char/selection.c
.PP
.nf
    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 *
.fi
.PP
// Duplicate ioctls
.PP
This list does not include ioctls in the range
.B SIOCDEVPRIVATE
and
.BR SIOCPROTOPRIVATE .
.TS
l l l.
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
.TE
.SH SEE ALSO
.BR ioctl (2),
.BR ioctl_fat (2),
.BR netdevice (7)
.SH COLOPHON
This page is part of release 4.15 of the Linux
.I man-pages
project.
A description of the project,
information about reporting bugs,
and the latest version of this page,
can be found at
\%https://www.kernel.org/doc/man\-pages/.