man-pages/man2/ioctl_list.2

1047 lines
24 KiB
Groff

.\" 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 2019-11-19 "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.
In addition, information about some ioctls can be found in
the pages listed under SEE ALSO in
.BR ioctl (2).
.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.
FIOSETOWN const int *
SIOCSPGRP const int *
FIOGETOWN int *
SIOCGPGRP int *
SIOCATMAR int *
SIOCGSTAMP timeval *
.TE
.sp 1
// <include/asm-i386/termios.h>
.TS
l l.
TCGETS struct termios *
TCSETS const struct termios *
TCSETSW const struct termios *
TCSETSF const struct termios *
TCGETA struct termio *
TCSETA const struct termio *
TCSETAW const struct termio *
TCSETAF const struct termio *
TCSBRK int
TCXONC int
TCFLSH int
TIOCEXCL void
TIOCNXCL void
TIOCSCTTY int
TIOCGPGRP pid_t *
TIOCSPGRP const pid_t *
TIOCOUTQ int *
TIOCSTI const char *
TIOCGWINSZ struct winsize *
TIOCSWINSZ const struct winsize *
TIOCMGET int *
TIOCMBIS const int *
TIOCMBIC const int *
TIOCMSET const int *
TIOCGSOFTCAR int *
TIOCSSOFTCAR const int *
FIONREAD int *
TIOCINQ int *
TIOCLINUX const char * // MORE
TIOCCONS void
TIOCGSERIAL struct serial_struct *
TIOCSSERIAL const struct serial_struct *
TIOCPKT const int *
FIONBIO const int *
TIOCNOTTY void
TIOCSETD const int *
TIOCGETD int *
TCSBRKP int
TIOCTTYGSTRUCT struct tty_struct *
FIONCLEX void
FIOCLEX void
FIOASYNC const int *
TIOCSERCONFIG void
TIOCSERGWILD int *
TIOCSERSWILD const int *
TIOCGLCKTRMIOS struct termios *
TIOCSLCKTRMIOS const struct termios *
TIOCSERGSTRUCT struct async_struct *
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.
TIOCSERGETMULTI struct serial_multiport_struct *
TIOCSERSETMULTI const struct serial_multiport_struct *
.TE
.sp 1
// <include/linux/ax25.h>
.TS
l l.
SIOCAX25GETUID const struct sockaddr_ax25 *
SIOCAX25ADDUID const struct sockaddr_ax25 *
SIOCAX25DELUID const struct sockaddr_ax25 *
SIOCAX25NOUID const int *
SIOCAX25DIGCTL const int *
SIOCAX25GETPARMS struct ax25_parms_struct * // I-O
.TE
.TS
l l.
SIOCAX25SETPARMS const struct ax25_parms_struct *
.TE
.sp 1
// <include/linux/cdk.h>
.TS
l l.
STL_BINTR void
STL_BSTART void
STL_BSTOP void
STL_BRESET void
.TE
.sp 1
// <include/linux/cdrom.h>
.TS
l l.
CDROMPAUSE void
CDROMRESUME void
CDROMPLAYMSF const struct cdrom_msf *
CDROMPLAYTRKIND const struct cdrom_ti *
CDROMREADTOCHDR struct cdrom_tochdr *
.TE
.TS
l l l.
CDROMREADTOCENTRY struct cdrom_tocentry * // I-O
.TE
.TS
l l l.
CDROMSTOP void
CDROMSTART void
CDROMEJECT void
CDROMVOLCTRL const struct cdrom_volctrl *
CDROMSUBCHNL struct cdrom_subchnl * // I-O
CDROMREADMODE2 const struct cdrom_msf * // MORE
CDROMREADMODE1 const struct cdrom_msf * // MORE
CDROMREADAUDIO const struct cdrom_read_audio * // MORE
CDROMEJECT_SW int
.TE
.TS
l l l.
CDROMMULTISESSION struct cdrom_multisession * // I-O
.TE
.TS
l l l.
CDROM_GET_UPC struct { char [8]; } *
CDROMRESET void
CDROMVOLREAD struct cdrom_volctrl *
CDROMREADRAW const struct cdrom_msf * // MORE
CDROMREADCOOKED const struct cdrom_msf * // MORE
CDROMSEEK const struct cdrom_msf *
.TE
.sp 1
// <include/linux/cm206.h>
.TS
l l.
CM206CTL_GET_STAT int
CM206CTL_GET_LAST_STAT int
.TE
.sp 1
// <include/linux/cyclades.h>
.TS
l l.
CYGETMON struct cyclades_monitor *
CYGETTHRESH int *
CYSETTHRESH int
CYGETDEFTHRESH int *
CYSETDEFTHRESH int
CYGETTIMEOUT int *
CYSETTIMEOUT int
CYGETDEFTIMEOUT int *
CYSETDEFTIMEOUT int
.TE
.sp 1
// <include/linux/fd.h>
.TS
l l.
FDCLRPRM void
FDSETPRM const struct floppy_struct *
FDDEFPRM const struct floppy_struct *
FDGETPRM struct floppy_struct *
FDMSGON void
FDMSGOFF void
FDFMTBEG void
FDFMTTRK const struct format_descr *
FDFMTEND void
FDSETEMSGTRESH int
FDFLUSH void
FDSETMAXERRS const struct floppy_max_errors *
FDGETMAXERRS struct floppy_max_errors *
FDGETDRVTYP struct { char [16]; } *
FDSETDRVPRM const struct floppy_drive_params *
FDGETDRVPRM struct floppy_drive_params *
FDGETDRVSTAT struct floppy_drive_struct *
FDPOLLDRVSTAT struct floppy_drive_struct *
FDRESET int
FDGETFDCSTAT struct floppy_fdc_state *
FDWERRORCLR void
FDWERRORGET struct floppy_write_errors *
.TE
.TS
l l l.
FDRAWCMD struct floppy_raw_cmd * // MORE // I-O
FDTWADDLE void
.TE
.sp 1
// <include/linux/fs.h>
.TS
l l l.
BLKROSET const int *
BLKROGET int *
BLKRRPART void
BLKGETSIZE unsigned long *
BLKFLSBUF void
BLKRASET unsigned long
BLKRAGET unsigned long *
FIBMAP int * // I-O
FIGETBSZ int *
FS_IOC_GETFLAGS int *
FS_IOC_SETFLAGS int *
FS_IOC_GETVERSION int *
FS_IOC_SETVERSION int *
FS_IOC_FIEMAP struct fiemap *
FS_IOC32_SETFLAGS int *
FS_IOC32_SETFLAGS int *
FS_IOC32_GETVERSION int *
FS_IOC32_SETVERSION int *
.TE
.sp 1
// <include/linux/hdreg.h>
.TS
l l.
HDIO_GETGEO struct hd_geometry *
HDIO_GET_UNMASKINTR int *
HDIO_GET_MULTCOUNT int *
HDIO_GET_IDENTITY struct hd_driveid *
HDIO_GET_KEEPSETTINGS int *
HDIO_GET_CHIPSET int *
HDIO_GET_NOWERR int *
HDIO_GET_DMA int *
HDIO_DRIVE_CMD int * // I-O
HDIO_SET_MULTCOUNT int
HDIO_SET_UNMASKINTR int
HDIO_SET_KEEPSETTINGS int
HDIO_SET_CHIPSET int
HDIO_SET_NOWERR int
HDIO_SET_DMA int
.TE
.sp 1
// <include/linux/if_eql.h>
.TS
l l l.
EQL_ENSLAVE struct ifreq * // MORE // I-O
EQL_EMANCIPATE struct ifreq * // MORE // I-O
EQL_GETSLAVECFG struct ifreq * // MORE // I-O
EQL_SETSLAVECFG struct ifreq * // MORE // I-O
EQL_GETMASTRCFG struct ifreq * // MORE // I-O
EQL_SETMASTRCFG struct ifreq * // MORE // I-O
.TE
.sp 1
// <include/linux/if_plip.h>
.TS
l l l.
SIOCDEVPLIP struct ifreq * // I-O
.TE
.sp 1
// <include/linux/if_ppp.h>
.TS
l l.
PPPIOCGFLAGS int *
PPPIOCSFLAGS const int *
PPPIOCGASYNCMAP int *
PPPIOCSASYNCMAP const int *
PPPIOCGUNIT int *
PPPIOCSINPSIG const int *
PPPIOCSDEBUG const int *
PPPIOCGDEBUG int *
PPPIOCGSTAT struct ppp_stats *
PPPIOCGTIME struct ppp_ddinfo *
PPPIOCGXASYNCMAP struct { int [8]; } *
PPPIOCSXASYNCMAP const struct { int [8]; } *
PPPIOCSMRU const int *
PPPIOCRASYNCMAP const int *
PPPIOCSMAXCID const int *
.TE
.sp 1
// <include/linux/ipx.h>
.TS
l l.
SIOCAIPXITFCRT const char *
SIOCAIPXPRISLT const char *
SIOCIPXCFGDATA struct ipx_config_data *
.TE
.sp 1
// <include/linux/kd.h>
.TS
l l.
GIO_FONT struct { char [8192]; } *
PIO_FONT const struct { char [8192]; } *
.TE
.TS
l2 l2 l.
GIO_FONTX struct console_font_desc * // MORE // I-O
PIO_FONTX const struct console_font_desc * //MORE
.TE
.TS
l l l.
GIO_CMAP struct { char [48]; } *
PIO_CMAP const struct { char [48]; }
.TE
.TS
l l l.
KIOCSOUND int
KDMKTONE int
KDGETLED char *
KDSETLED int
KDGKBTYPE char *
KDADDIO int // MORE
KDDELIO int // MORE
KDENABIO void // MORE
KDDISABIO void // MORE
KDSETMODE int
KDGETMODE int *
KDMAPDISP void // MORE
KDUNMAPDISP void // MORE
GIO_SCRNMAP struct { char [E_TABSZ]; } *
.TE
.TS
l l.
PIO_SCRNMAP const struct { char [E_TABSZ]; } *
GIO_UNISCRNMAP struct { short [E_TABSZ]; } *
PIO_UNISCRNMAP const struct { short [E_TABSZ]; } *
.TE
.TS
l l l.
GIO_UNIMAP struct unimapdesc * // MORE // I-O
PIO_UNIMAP const struct unimapdesc * // MORE
PIO_UNIMAPCLR const struct unimapinit *
KDGKBMODE int *
KDSKBMODE int
KDGKBMETA int *
KDSKBMETA int
KDGKBLED int *
KDSKBLED int
KDGKBENT struct kbentry * // I-O
KDSKBENT const struct kbentry *
KDGKBSENT struct kbsentry * // I-O
KDSKBSENT const struct kbsentry *
KDGKBDIACR struct kbdiacrs *
KDSKBDIACR const struct kbdiacrs *
KDGETKEYCODE struct kbkeycode * // I-O
KDSETKEYCODE const struct kbkeycode *
KDSIGACCEPT int
.TE
.sp 1
// <include/linux/lp.h>
.TS
l l.
LPCHAR int
LPTIME int
LPABORT int
LPSETIRQ int
LPGETIRQ int *
LPWAIT int
LPCAREFUL int
LPABORTOPEN int
LPGETSTATUS int *
LPRESET void
LPGETSTATS struct lp_stats *
.TE
.sp 1
// <include/linux/mroute.h>
.TS
l l l.
SIOCGETVIFCNT struct sioc_vif_req * // I-O
SIOCGETSGCNT struct sioc_sg_req * // I-O
.TE
.sp 1
// <include/linux/msdos_fs.h> see
.BR ioctl_fat (2)
.TS
l l.
VFAT_IOCTL_READDIR_BOTH struct dirent [2]
VFAT_IOCTL_READDIR_SHORT struct dirent [2]
FAT_IOCTL_GET_ATTRIBUTES __u32 *
FAT_IOCTL_SET_ATTRIBUTES const __u32 *
FAT_IOCTL_GET_VOLUME_ID __u32 *
.TE
.sp 1
// <include/linux/mtio.h>
.TS
l l.
MTIOCTOP const struct mtop *
MTIOCGET struct mtget *
MTIOCPOS struct mtpos *
MTIOCGETCONFIG struct mtconfiginfo *
MTIOCSETCONFIG const struct mtconfiginfo *
.TE
.sp 1
// <include/linux/netrom.h>
.TS
l l l.
SIOCNRGETPARMS struct nr_parms_struct * // I-O
SIOCNRSETPARMS const struct nr_parms_struct *
SIOCNRDECOBS void
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.
DDIOCSDBG const int *
CDROMAUDIOBUFSIZ int
.TE
.sp 1
// <include/linux/scc.h>
.TS
l l l.
TIOCSCCINI void
TIOCCHANINI const struct scc_modem *
TIOCGKISS struct ioctl_command * // I-O
TIOCSKISS const struct ioctl_command *
TIOCSCCSTAT struct scc_stat *
.TE
.sp 1
// <include/linux/scsi.h>
.TS
l l.
SCSI_IOCTL_GET_IDLUN struct { int [2]; } *
SCSI_IOCTL_TAGGED_ENABLE void
SCSI_IOCTL_TAGGED_DISABLE void
.TE
.TS
l l l.
SCSI_IOCTL_PROBE_HOST const int * // MORE
.TE
.sp 1
// <include/linux/smb_fs.h>
.TS
l l l.
SMB_IOC_GETMOUNTUID uid_t *
.TE
.sp 1
// <include/uapi/linux/sockios.h> see
.BR netdevice (7)
.PP
.TS
l l l.
SIOCADDRT const struct rtentry * // MORE
SIOCDELRT const struct rtentry * // MORE
SIOCGIFNAME char []
SIOCSIFLINK void
SIOCGIFCONF struct ifconf * // MORE // I-O
SIOCGIFFLAGS struct ifreq * // I-O
SIOCSIFFLAGS const struct ifreq *
SIOCGIFADDR struct ifreq * // I-O
SIOCSIFADDR const struct ifreq *
SIOCGIFDSTADDR struct ifreq * // I-O
SIOCSIFDSTADDR const struct ifreq *
SIOCGIFBRDADDR struct ifreq * // I-O
SIOCSIFBRDADDR const struct ifreq *
SIOCGIFNETMASK struct ifreq * // I-O
SIOCSIFNETMASK const struct ifreq *
SIOCGIFMETRIC struct ifreq * // I-O
SIOCSIFMETRIC const struct ifreq *
SIOCGIFMEM struct ifreq * // I-O
SIOCSIFMEM const struct ifreq *
SIOCGIFMTU struct ifreq * // I-O
SIOCSIFMTU const struct ifreq *
.TE
.TS
l l l.
OLD_SIOCGIFHWADDR struct ifreq * // I-O
SIOCSIFHWADDR const struct ifreq * // MORE
SIOCGIFENCAP int *
SIOCSIFENCAP const int *
SIOCGIFHWADDR struct ifreq * // I-O
SIOCGIFSLAVE void
SIOCSIFSLAVE void
SIOCADDMULTI const struct ifreq *
SIOCDELMULTI const struct ifreq *
SIOCADDRTOLD void
SIOCDELRTOLD void
SIOCDARP const struct arpreq *
SIOCGARP struct arpreq * // I-O
SIOCSARP const struct arpreq *
SIOCDRARP const struct arpreq *
SIOCGRARP struct arpreq * // I-O
SIOCSRARP const struct arpreq *
SIOCGIFMAP struct ifreq * // I-O
SIOCSIFMAP const struct ifreq *
.TE
.sp 1
// <include/linux/soundcard.h>
.TS
l l.
SNDCTL_SEQ_RESET void
SNDCTL_SEQ_SYNC void
.TE
.TS
l l l.
SNDCTL_SYNTH_INFO struct synth_info * // I-O
SNDCTL_SEQ_CTRLRATE int * // I-O
SNDCTL_SEQ_GETOUTCOUNT int *
SNDCTL_SEQ_GETINCOUNT int *
SNDCTL_SEQ_PERCMODE void
.TE
.TS
l l.
SNDCTL_FM_LOAD_INSTR const struct sbi_instrument *
.TE
.TS
l l l.
SNDCTL_SEQ_TESTMIDI const int *
SNDCTL_SEQ_RESETSAMPLES const int *
SNDCTL_SEQ_NRSYNTHS int *
SNDCTL_SEQ_NRMIDIS int *
SNDCTL_MIDI_INFO struct midi_info * // I-O
SNDCTL_SEQ_THRESHOLD const int *
SNDCTL_SYNTH_MEMAVL int * // I-O
SNDCTL_FM_4OP_ENABLE const int *
SNDCTL_PMGR_ACCESS struct patmgr_info * // I-O
SNDCTL_SEQ_PANIC void
.TE
.TS
l l.
SNDCTL_SEQ_OUTOFBAND const struct seq_event_rec *
.TE
.TS
l l l.
SNDCTL_TMR_TIMEBASE int * // I-O
SNDCTL_TMR_START void
SNDCTL_TMR_STOP void
SNDCTL_TMR_CONTINUE void
SNDCTL_TMR_TEMPO int * // I-O
SNDCTL_TMR_SOURCE int * // I-O
SNDCTL_TMR_METRONOME const int *
SNDCTL_TMR_SELECT int * // I-O
SNDCTL_PMGR_IFACE struct patmgr_info * // I-O
SNDCTL_MIDI_PRETIME int * // I-O
SNDCTL_MIDI_MPUMODE const int *
.TE
.TS
l l l.
SNDCTL_MIDI_MPUCMD struct mpu_command_rec * // I-O
.TE
.TS
l l l.
SNDCTL_DSP_RESET void
SNDCTL_DSP_SYNC void
SNDCTL_DSP_SPEED int * // I-O
SNDCTL_DSP_STEREO int * // I-O
SNDCTL_DSP_GETBLKSIZE int * // I-O
SOUND_PCM_WRITE_CHANNELS int * // I-O
SOUND_PCM_WRITE_FILTER int * // I-O
SNDCTL_DSP_POST void
SNDCTL_DSP_SUBDIVIDE int * // I-O
SNDCTL_DSP_SETFRAGMENT int * // I-O
SNDCTL_DSP_GETFMTS int *
SNDCTL_DSP_SETFMT int * // I-O
.TE
.TS
l l.
SNDCTL_DSP_GETOSPACE struct audio_buf_info *
SNDCTL_DSP_GETISPACE struct audio_buf_info *
SNDCTL_DSP_NONBLOCK void
SOUND_PCM_READ_RATE int *
SOUND_PCM_READ_CHANNELS int *
SOUND_PCM_READ_BITS int *
SOUND_PCM_READ_FILTER int *
SNDCTL_COPR_RESET void
SNDCTL_COPR_LOAD const struct copr_buffer *
.TE
.TS
l l l.
SNDCTL_COPR_RDATA struct copr_debug_buf * // I-O
SNDCTL_COPR_RCODE struct copr_debug_buf * // I-O
.TE
.TS
l l.
SNDCTL_COPR_WDATA const struct copr_debug_buf *
SNDCTL_COPR_WCODE const struct copr_debug_buf *
.TE
.TS
l l l.
SNDCTL_COPR_RUN struct copr_debug_buf * // I-O
SNDCTL_COPR_HALT struct copr_debug_buf * // I-O
.TE
.TS
l l.
SNDCTL_COPR_SENDMSG const struct copr_msg *
SNDCTL_COPR_RCVMSG struct copr_msg *
SOUND_MIXER_READ_VOLUME int *
SOUND_MIXER_READ_BASS int *
SOUND_MIXER_READ_TREBLE int *
SOUND_MIXER_READ_SYNTH int *
SOUND_MIXER_READ_PCM int *
SOUND_MIXER_READ_SPEAKER int *
SOUND_MIXER_READ_LINE int *
SOUND_MIXER_READ_MIC int *
SOUND_MIXER_READ_CD int *
SOUND_MIXER_READ_IMIX int *
SOUND_MIXER_READ_ALTPCM int *
SOUND_MIXER_READ_RECLEV int *
SOUND_MIXER_READ_IGAIN int *
SOUND_MIXER_READ_OGAIN int *
SOUND_MIXER_READ_LINE1 int *
SOUND_MIXER_READ_LINE2 int *
SOUND_MIXER_READ_LINE3 int *
SOUND_MIXER_READ_MUTE int *
SOUND_MIXER_READ_ENHANCE int *
SOUND_MIXER_READ_LOUD int *
SOUND_MIXER_READ_RECSRC int *
SOUND_MIXER_READ_DEVMASK int *
SOUND_MIXER_READ_RECMASK int *
SOUND_MIXER_READ_STEREODEVS int *
SOUND_MIXER_READ_CAPS int *
.TE
.TS
l l l.
SOUND_MIXER_WRITE_VOLUME int * // I-O
SOUND_MIXER_WRITE_BASS int * // I-O
SOUND_MIXER_WRITE_TREBLE int * // I-O
SOUND_MIXER_WRITE_SYNTH int * // I-O
SOUND_MIXER_WRITE_PCM int * // I-O
SOUND_MIXER_WRITE_SPEAKER int * // I-O
SOUND_MIXER_WRITE_LINE int * // I-O
SOUND_MIXER_WRITE_MIC int * // I-O
SOUND_MIXER_WRITE_CD int * // I-O
SOUND_MIXER_WRITE_IMIX int * // I-O
SOUND_MIXER_WRITE_ALTPCM int * // I-O
SOUND_MIXER_WRITE_RECLEV int * // I-O
SOUND_MIXER_WRITE_IGAIN int * // I-O
SOUND_MIXER_WRITE_OGAIN int * // I-O
SOUND_MIXER_WRITE_LINE1 int * // I-O
SOUND_MIXER_WRITE_LINE2 int * // I-O
SOUND_MIXER_WRITE_LINE3 int * // I-O
SOUND_MIXER_WRITE_MUTE int * // I-O
SOUND_MIXER_WRITE_ENHANCE int * // I-O
SOUND_MIXER_WRITE_LOUD int * // I-O
SOUND_MIXER_WRITE_RECSRC int * // I-O
.TE
.sp 1
// <include/linux/timerfd.h> see
.BR timerfd_create (2)
.TS
l l l.
TFD_IOC_SET_TICKS uint64_t *
.TE
.sp 1
// <include/linux/umsdos_fs.h>
.TS
l l l.
UMSDOS_READDIR_DOS struct umsdos_ioctl * // I-O
UMSDOS_UNLINK_DOS const struct umsdos_ioctl *
UMSDOS_RMDIR_DOS const struct umsdos_ioctl *
UMSDOS_STAT_DOS struct umsdos_ioctl * // I-O
UMSDOS_CREAT_EMD const struct umsdos_ioctl *
UMSDOS_UNLINK_EMD const struct umsdos_ioctl *
UMSDOS_READDIR_EMD struct umsdos_ioctl * // I-O
UMSDOS_GETVERSION struct umsdos_ioctl *
UMSDOS_INIT_EMD void
UMSDOS_DOS_SETUP const struct umsdos_ioctl *
UMSDOS_RENAME_DOS const struct umsdos_ioctl *
.TE
.sp 1
// <include/linux/vt.h>
.TS
l l.
VT_OPENQRY int *
VT_GETMODE struct vt_mode *
VT_SETMODE const struct vt_mode *
VT_GETSTATE struct vt_stat *
VT_SENDSIG void
VT_RELDISP int
VT_ACTIVATE int
VT_WAITACTIVE int
VT_DISALLOCATE int
VT_RESIZE const struct vt_sizes *
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.
FDSETPRM FIBMAP
FDDEFPRM FIGETBSZ
SCSI_IOCTL_GET_IDLUN
SNDCTL_TMR_START TCSETS
SNDCTL_TMR_STOP TCSETSW
SNDCTL_TMR_CONTINUE TCSETSF
.TE
.SH SEE ALSO
.BR ioctl (2),
.BR ioctl_fat (2),
.BR netdevice (7)