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
'E'	all	linux/input.h
'F'	all	linux/fb.h
'H'	all	linux/hiddev.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
'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-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
'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>
0xF4	00-1F	video/mbxfb.h		mbxfb
					<mailto:raph@8d.com>
