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	D2-DC	linux/umsdos_fs.h	Dead since 2.6.11, but don't reuse these.
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	arch/s390/include/asm/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'	20-2F	driver/usb/misc/vstusb.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
'O'     00-02   include/mtd/ubi-user.h UBI
'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	arch/x86/include/asm/ioctls.h	conflict!
'U'	00-EF	linux/drivers/usb/usb.h
'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
'['	00-07	linux/usb/usbtmc.h	USB Test and Measurement Devices
					<mailto:gregkh@suse.de>
'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!
'c'	80-9F	arch/s390/include/asm/chsc.h
'c'	A0-AF   arch/x86/include/asm/msr.h
'd'	00-FF	linux/char/drm/drm/h	conflict!
'd'	F0-FF	linux/digi1.h
'e'	all	linux/digi1.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'	00-09	linux/mmtimer.h
'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'	80-8F	linux/nilfs2_fs.h	NILFS2
'n'	E0-FF	video/matrox.h          matroxfb
'o'	00-1F	fs/ocfs2/ocfs2_fs.h	OCFS2
'o'     00-03   include/mtd/ubi-user.h  conflict! (OCFS2 and UBI overlaps)
'o'     40-41   include/mtd/ubi-user.h  UBI
'o'     01-A1   include/linux/dvb/*.h DVB
'p'	00-0F	linux/phantom.h		conflict! (OpenHaptics needs this)
'p'	00-3F	linux/mc146818rtc.h	conflict!
'p'	40-7F	linux/nvram.h
'p'	80-9F				user-space parport
					<mailto:tim@cyberelk.net>
'p'	a1-a4	linux/pps.h		LinuxPPS
					<mailto:giometti@linux.it>
'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	arch/x86/include/asm/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>	
0xAE	all	linux/kvm.h		Kernel-based Virtual Machine
					<mailto:kvm@vger.kernel.org>
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>
