Ioctl Numbers
19 October 1999
Michael Elizabeth Chastain
<mec@shout.net>

If you are adding new ioctl's to the kernel, you should use the _IO
macros defined in <linux/ioctl.h>:

    _IO    an ioctl with no parameters
    _IOW   an ioctl with write parameters (copy_from_user)
    _IOR   an ioctl with read parameters  (copy_to_user)
    _IOWR  an ioctl with both write and read parameters.

'Write' and 'read' are from the user's point of view, just like the
system calls 'write' and 'read'.  For example, a SET_FOO ioctl would
be _IOW, although the kernel would actually read data from user space;
a GET_FOO ioctl would be _IOR, although the kernel would actually write
data to user space.

The first argument to _IO, _IOW, _IOR, or _IOWR is an identifying letter
or number from the table below.  Because of the large number of drivers,
many drivers share a partial letter with other drivers.

If you are writing a driver for a new device and need a letter, pick an
unused block with enough room for expansion: 32 to 256 ioctl commands.
You can register the block by patching this file and submitting the
patch to Linus Torvalds.  Or you can e-mail me at <mec@shout.net> and
I'll register one for you.

The second argument to _IO, _IOW, _IOR, or _IOWR is a sequence number
to distinguish ioctls from each other.  The third argument to _IOW,
_IOR, or _IOWR is the type of the data going into the kernel or coming
out of the kernel (e.g.  'int' or 'struct foo').  NOTE!  Do NOT use
sizeof(arg) as the third argument as this results in your ioctl thinking
it passes an argument of type size_t.

Some devices use their major number as the identifier; this is OK, as
long as it is unique.  Some devices are irregular and don't follow any
convention at all.

Following this convention is good because:

(1) Keeping the ioctl's globally unique helps error checking:
    if a program calls an ioctl on the wrong device, it will get an
    error rather than some unexpected behaviour.

(2) The 'strace' build procedure automatically finds ioctl numbers
    defined with _IO, _IOW, _IOR, or _IOWR.

(3) 'strace' can decode numbers back into useful names when the
    numbers are unique.

(4) People looking for ioctls can grep for them more easily when
    this convention is used to define the ioctl numbers.

(5) When following the convention, the driver code can use generic
    code to copy the parameters between user and kernel space.

This table lists ioctls visible from user land for Linux/i386.  It contains
most drivers up to 2.3.14, but I know I am missing some.

Code	Seq#	Include File		Comments
========================================================
0x00	00-1F	linux/fs.h		conflict!
0x00	00-1F	scsi/scsi_ioctl.h	conflict!
0x00	00-1F	linux/fb.h		conflict!
0x00	00-1F	linux/wavefront.h	conflict!
0x02	all	linux/fd.h
0x03	all	linux/hdreg.h
0x04	all	linux/umsdos_fs.h
0x06	all	linux/lp.h
0x09	all	linux/md.h
0x12	all	linux/fs.h
		linux/blkpg.h
0x1b	all	InfiniBand Subsystem	<http://www.openib.org/>
0x20	all	drivers/cdrom/cm206.h
0x22	all	scsi/sg.h
'#'	00-3F	IEEE 1394 Subsystem	Block for the entire subsystem
'1'	00-1F	<linux/timepps.h>	PPS kit from Ulrich Windl
					<ftp://ftp.de.kernel.org/pub/linux/daemons/ntp/PPS/>
'8'	all				SNP8023 advanced NIC card
					<mailto:mcr@solidum.com>
'A'	00-1F	linux/apm_bios.h
'B'	C0-FF				advanced bbus
					<mailto:maassen@uni-freiburg.de>
'C'	all	linux/soundcard.h
'D'	all	asm-s390/dasd.h
'F'	all	linux/fb.h
'I'	all	linux/isdn.h
'J'	00-1F	drivers/scsi/gdth_ioctl.h
'K'	all	linux/kd.h
'L'	00-1F	linux/loop.h
'L'	E0-FF	linux/ppdd.h		encrypted disk device driver
					<http://linux01.gwdg.de/~alatham/ppdd.html>
'M'	all	linux/soundcard.h	conflict!
'M'	00-1F	linux/isicom.h		conflict!
'N'	00-1F	drivers/usb/scanner.h
'P'	all	linux/soundcard.h
'Q'	all	linux/soundcard.h
'R'	00-1F	linux/random.h
'S'	all	linux/cdrom.h		conflict!
'S'	80-81	scsi/scsi_ioctl.h	conflict!
'S'	82-FF	scsi/scsi.h		conflict!
'T'	all	linux/soundcard.h	conflict!
'T'	all	asm-i386/ioctls.h	conflict!
'U'	00-EF	linux/drivers/usb/usb.h
'U'	F0-FF	drivers/usb/auerswald.c
'V'	all	linux/vt.h
'W'	00-1F	linux/watchdog.h	conflict!
'W'	00-1F	linux/wanrouter.h	conflict!
'X'	all	linux/xfs_fs.h
'Y'	all	linux/cyclades.h
'a'	all				ATM on linux
					<http://lrcwww.epfl.ch/linux-atm/magic.html>
'b'	00-FF				bit3 vme host bridge
					<mailto:natalia@nikhefk.nikhef.nl>
'c'	00-7F	linux/comstats.h	conflict!
'c'	00-7F	linux/coda.h		conflict!
'd'	00-FF	linux/char/drm/drm/h	conflict!
'd'	00-1F	linux/devfs_fs.h	conflict!
'd'	00-DF	linux/video_decoder.h	conflict!
'd'	F0-FF	linux/digi1.h
'e'	all	linux/digi1.h		conflict!
'e'	00-1F	linux/video_encoder.h	conflict!
'e'	00-1F	net/irda/irtty.h	conflict!
'f'	00-1F	linux/ext2_fs.h
'g'	00-1F	linux/gfs2_ioctl.h
'h'	00-7F				Charon filesystem
					<mailto:zapman@interlan.net>
'i'	00-3F	linux/i2o.h
'j'	00-3F	linux/joystick.h
'l'	00-3F	linux/tcfs_fs.h		transparent cryptographic file system
					<http://mikonos.dia.unisa.it/tcfs>
'l'	40-7F	linux/udf_fs_i.h	in development:
					<http://sourceforge.net/projects/linux-udf/>
'm'	all	linux/mtio.h		conflict!
'm'	all	linux/soundcard.h	conflict!
'm'	all	linux/synclink.h	conflict!
'm'	00-1F	net/irda/irmod.h	conflict!
'n'	00-7F	linux/ncp_fs.h
'n'	E0-FF	video/matrox.h          matroxfb
'p'	00-3F	linux/mc146818rtc.h
'p'	40-7F	linux/nvram.h
'p'	80-9F				user-space parport
					<mailto:tim@cyberelk.net>
'q'	00-1F	linux/serio.h
'q'	80-FF				Internet PhoneJACK, Internet LineJACK
					<http://www.quicknet.net>
'r'	00-1F	linux/msdos_fs.h
's'	all	linux/cdk.h
't'	00-7F	linux/if_ppp.h
't'	80-8F	linux/isdn_ppp.h
'u'	00-1F	linux/smb_fs.h
'v'	00-1F	linux/ext2_fs.h		conflict!
'v'	all	linux/videodev.h	conflict!
'w'	all				CERN SCI driver
'y'	00-1F				packet based user level communications
					<mailto:zapman@interlan.net>
'z'	00-3F				CAN bus card
					<mailto:hdstich@connectu.ulm.circular.de>
'z'	40-7F				CAN bus card
					<mailto:oe@port.de>
0x80	00-1F	linux/fb.h
0x81	00-1F	linux/videotext.h
0x89	00-06	asm-i386/sockios.h
0x89	0B-DF	linux/sockios.h
0x89	E0-EF	linux/sockios.h		SIOCPROTOPRIVATE range
0x89	F0-FF	linux/sockios.h		SIOCDEVPRIVATE range
0x8B	all	linux/wireless.h
0x8C	00-3F				WiNRADiO driver
					<http://www.proximity.com.au/~brian/winradio/>
0x90	00	drivers/cdrom/sbpcd.h
0x93	60-7F	linux/auto_fs.h
0x99	00-0F				537-Addinboard driver
					<mailto:buk@buks.ipn.de>
0xA0	all	linux/sdp/sdp.h		Industrial Device Project
					<mailto:kenji@bitgate.com>
0xA3	80-8F	Port ACL		in development:
					<mailto:tlewis@mindspring.com>
0xA3	90-9F	linux/dtlk.h
0xAB	00-1F	linux/nbd.h
0xAC	00-1F	linux/raw.h
0xAD	00	Netfilter device	in development:
					<mailto:rusty@rustcorp.com.au>	
0xB0	all	RATIO devices		in development:
					<mailto:vgo@ratio.de>
0xB1	00-1F	PPPoX			<mailto:mostrows@styx.uwaterloo.ca>
0xCB	00-1F	CBM serial IEC bus	in development:
					<mailto:michael.klein@puffin.lb.shuttle.de>
0xDD	00-3F	ZFCP device driver	see drivers/s390/scsi/
					<mailto:aherrman@de.ibm.com>
0xF3	00-3F	video/sisfb.h		sisfb (in development)
					<mailto:thomas@winischhofer.net>
