mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-10 15:10:38 +00:00
3b59bf0816
Pull networking merge from David Miller: "1) Move ixgbe driver over to purely page based buffering on receive. From Alexander Duyck. 2) Add receive packet steering support to e1000e, from Bruce Allan. 3) Convert TCP MD5 support over to RCU, from Eric Dumazet. 4) Reduce cpu usage in handling out-of-order TCP packets on modern systems, also from Eric Dumazet. 5) Support the IP{,V6}_UNICAST_IF socket options, making the wine folks happy, from Erich Hoover. 6) Support VLAN trunking from guests in hyperv driver, from Haiyang Zhang. 7) Support byte-queue-limtis in r8169, from Igor Maravic. 8) Outline code intended for IP_RECVTOS in IP_PKTOPTIONS existed but was never properly implemented, Jiri Benc fixed that. 9) 64-bit statistics support in r8169 and 8139too, from Junchang Wang. 10) Support kernel side dump filtering by ctmark in netfilter ctnetlink, from Pablo Neira Ayuso. 11) Support byte-queue-limits in gianfar driver, from Paul Gortmaker. 12) Add new peek socket options to assist with socket migration, from Pavel Emelyanov. 13) Add sch_plug packet scheduler whose queue is controlled by userland daemons using explicit freeze and release commands. From Shriram Rajagopalan. 14) Fix FCOE checksum offload handling on transmit, from Yi Zou." * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (1846 commits) Fix pppol2tp getsockname() Remove printk from rds_sendmsg ipv6: fix incorrent ipv6 ipsec packet fragment cpsw: Hook up default ndo_change_mtu. net: qmi_wwan: fix build error due to cdc-wdm dependecy netdev: driver: ethernet: Add TI CPSW driver netdev: driver: ethernet: add cpsw address lookup engine support phy: add am79c874 PHY support mlx4_core: fix race on comm channel bonding: send igmp report for its master fs_enet: Add MPC5125 FEC support and PHY interface selection net: bpf_jit: fix BPF_S_LDX_B_MSH compilation net: update the usage of CHECKSUM_UNNECESSARY fcoe: use CHECKSUM_UNNECESSARY instead of CHECKSUM_PARTIAL on tx net: do not do gso for CHECKSUM_UNNECESSARY in netif_needs_gso ixgbe: Fix issues with SR-IOV loopback when flow control is disabled net/hyperv: Fix the code handling tx busy ixgbe: fix namespace issues when FCoE/DCB is not enabled rtlwifi: Remove unused ETH_ADDR_LEN defines igbvf: Use ETH_ALEN ... Fix up fairly trivial conflicts in drivers/isdn/gigaset/interface.c and drivers/net/usb/{Kconfig,qmi_wwan.c} as per David.
326 lines
12 KiB
Plaintext
326 lines
12 KiB
Plaintext
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/x86. It contains
|
|
most drivers up to 2.6.31, but I know I am missing some. There has been
|
|
no attempt to list non-X86 architectures or ioctls from drivers/staging/.
|
|
|
|
Code Seq#(hex) 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/raid/md_u.h
|
|
0x10 00-0F drivers/char/s390/vmcp.h
|
|
0x12 all linux/fs.h
|
|
linux/blkpg.h
|
|
0x1b all InfiniBand Subsystem <http://infiniband.sourceforge.net/>
|
|
0x20 all drivers/cdrom/cm206.h
|
|
0x22 all scsi/sg.h
|
|
'#' 00-3F IEEE 1394 Subsystem Block for the entire subsystem
|
|
'$' 00-0F linux/perf_counter.h, linux/perf_event.h
|
|
'&' 00-07 drivers/firewire/nosy-user.h
|
|
'1' 00-1F <linux/timepps.h> PPS kit from Ulrich Windl
|
|
<ftp://ftp.de.kernel.org/pub/linux/daemons/ntp/PPS/>
|
|
'2' 01-04 linux/i2o.h
|
|
'3' 00-0F drivers/s390/char/raw3270.h conflict!
|
|
'3' 00-1F linux/suspend_ioctls.h conflict!
|
|
and kernel/power/user.c
|
|
'8' all SNP8023 advanced NIC card
|
|
<mailto:mcr@solidum.com>
|
|
'@' 00-0F linux/radeonfb.h conflict!
|
|
'@' 00-0F drivers/video/aty/aty128fb.c conflict!
|
|
'A' 00-1F linux/apm_bios.h conflict!
|
|
'A' 00-0F linux/agpgart.h conflict!
|
|
and drivers/char/agp/compat_ioctl.h
|
|
'A' 00-7F sound/asound.h conflict!
|
|
'B' 00-1F linux/cciss_ioctl.h conflict!
|
|
'B' 00-0F include/linux/pmu.h conflict!
|
|
'B' C0-FF advanced bbus
|
|
<mailto:maassen@uni-freiburg.de>
|
|
'C' all linux/soundcard.h conflict!
|
|
'C' 01-2F linux/capi.h conflict!
|
|
'C' F0-FF drivers/net/wan/cosa.h conflict!
|
|
'D' all arch/s390/include/asm/dasd.h
|
|
'D' 40-5F drivers/scsi/dpt/dtpi_ioctl.h
|
|
'D' 05 drivers/scsi/pmcraid.h
|
|
'E' all linux/input.h conflict!
|
|
'E' 00-0F xen/evtchn.h conflict!
|
|
'F' all linux/fb.h conflict!
|
|
'F' 01-02 drivers/scsi/pmcraid.h conflict!
|
|
'F' 20 drivers/video/fsl-diu-fb.h conflict!
|
|
'F' 20 drivers/video/intelfb/intelfb.h conflict!
|
|
'F' 20 linux/ivtvfb.h conflict!
|
|
'F' 20 linux/matroxfb.h conflict!
|
|
'F' 20 drivers/video/aty/atyfb_base.c conflict!
|
|
'F' 00-0F video/da8xx-fb.h conflict!
|
|
'F' 80-8F linux/arcfb.h conflict!
|
|
'F' DD video/sstfb.h conflict!
|
|
'G' 00-3F drivers/misc/sgi-gru/grulib.h conflict!
|
|
'G' 00-0F linux/gigaset_dev.h conflict!
|
|
'H' 00-7F linux/hiddev.h conflict!
|
|
'H' 00-0F linux/hidraw.h conflict!
|
|
'H' 00-0F sound/asound.h conflict!
|
|
'H' 20-40 sound/asound_fm.h conflict!
|
|
'H' 80-8F sound/sfnt_info.h conflict!
|
|
'H' 10-8F sound/emu10k1.h conflict!
|
|
'H' 10-1F sound/sb16_csp.h conflict!
|
|
'H' 10-1F sound/hda_hwdep.h conflict!
|
|
'H' 40-4F sound/hdspm.h conflict!
|
|
'H' 40-4F sound/hdsp.h conflict!
|
|
'H' 90 sound/usb/usx2y/usb_stream.h
|
|
'H' C0-F0 net/bluetooth/hci.h conflict!
|
|
'H' C0-DF net/bluetooth/hidp/hidp.h conflict!
|
|
'H' C0-DF net/bluetooth/cmtp/cmtp.h conflict!
|
|
'H' C0-DF net/bluetooth/bnep/bnep.h conflict!
|
|
'H' F1 linux/hid-roccat.h <mailto:erazor_de@users.sourceforge.net>
|
|
'I' all linux/isdn.h conflict!
|
|
'I' 00-0F drivers/isdn/divert/isdn_divert.h conflict!
|
|
'I' 40-4F linux/mISDNif.h conflict!
|
|
'J' 00-1F drivers/scsi/gdth_ioctl.h
|
|
'K' all linux/kd.h
|
|
'L' 00-1F linux/loop.h conflict!
|
|
'L' 10-1F drivers/scsi/mpt2sas/mpt2sas_ctl.h conflict!
|
|
'L' E0-FF linux/ppdd.h encrypted disk device driver
|
|
<http://linux01.gwdg.de/~alatham/ppdd.html>
|
|
'M' all linux/soundcard.h conflict!
|
|
'M' 01-16 mtd/mtd-abi.h conflict!
|
|
and drivers/mtd/mtdchar.c
|
|
'M' 01-03 drivers/scsi/megaraid/megaraid_sas.h
|
|
'M' 00-0F drivers/video/fsl-diu-fb.h conflict!
|
|
'N' 00-1F drivers/usb/scanner.h
|
|
'N' 40-7F drivers/block/nvme.c
|
|
'O' 00-06 mtd/ubi-user.h UBI
|
|
'P' all linux/soundcard.h conflict!
|
|
'P' 60-6F sound/sscape_ioctl.h conflict!
|
|
'P' 00-0F drivers/usb/class/usblp.c conflict!
|
|
'Q' all linux/soundcard.h
|
|
'R' 00-1F linux/random.h conflict!
|
|
'R' 01 linux/rfkill.h conflict!
|
|
'R' C0-DF net/bluetooth/rfcomm.h
|
|
'S' all linux/cdrom.h conflict!
|
|
'S' 80-81 scsi/scsi_ioctl.h conflict!
|
|
'S' 82-FF scsi/scsi.h conflict!
|
|
'S' 00-7F sound/asequencer.h conflict!
|
|
'T' all linux/soundcard.h conflict!
|
|
'T' 00-AF sound/asound.h conflict!
|
|
'T' all arch/x86/include/asm/ioctls.h conflict!
|
|
'T' C0-DF linux/if_tun.h conflict!
|
|
'U' all sound/asound.h conflict!
|
|
'U' 00-CF linux/uinput.h conflict!
|
|
'U' 00-EF linux/usbdevice_fs.h
|
|
'U' C0-CF drivers/bluetooth/hci_uart.h
|
|
'V' all linux/vt.h conflict!
|
|
'V' all linux/videodev2.h conflict!
|
|
'V' C0 linux/ivtvfb.h conflict!
|
|
'V' C0 linux/ivtv.h conflict!
|
|
'V' C0 media/davinci/vpfe_capture.h conflict!
|
|
'V' C0 media/si4713.h conflict!
|
|
'V' C0-CF drivers/media/video/mxb.h conflict!
|
|
'W' 00-1F linux/watchdog.h conflict!
|
|
'W' 00-1F linux/wanrouter.h conflict!
|
|
'W' 00-3F sound/asound.h conflict!
|
|
'X' all fs/xfs/xfs_fs.h conflict!
|
|
and fs/xfs/linux-2.6/xfs_ioctl32.h
|
|
and include/linux/falloc.h
|
|
and linux/fs.h
|
|
'X' all fs/ocfs2/ocfs_fs.h conflict!
|
|
'X' 01 linux/pktcdvd.h conflict!
|
|
'Y' all linux/cyclades.h
|
|
'Z' 14-15 drivers/message/fusion/mptctl.h
|
|
'[' 00-07 linux/usb/tmc.h USB Test and Measurement Devices
|
|
<mailto:gregkh@linuxfoundation.org>
|
|
'a' all linux/atm*.h, linux/sonet.h ATM on linux
|
|
<http://lrcwww.epfl.ch/>
|
|
'b' 00-FF conflict! bit3 vme host bridge
|
|
<mailto:natalia@nikhefk.nikhef.nl>
|
|
'c' all linux/cm4000_cs.h conflict!
|
|
'c' 00-7F linux/comstats.h conflict!
|
|
'c' 00-7F linux/coda.h conflict!
|
|
'c' 00-1F linux/chio.h conflict!
|
|
'c' 80-9F arch/s390/include/asm/chsc.h conflict!
|
|
'c' A0-AF arch/x86/include/asm/msr.h conflict!
|
|
'd' 00-FF linux/char/drm/drm/h conflict!
|
|
'd' 02-40 pcmcia/ds.h conflict!
|
|
'd' 10-3F drivers/media/video/dabusb.h conflict!
|
|
'd' C0-CF drivers/media/video/saa7191.h conflict!
|
|
'd' F0-FF linux/digi1.h
|
|
'e' all linux/digi1.h conflict!
|
|
'e' 00-1F drivers/net/irda/irtty-sir.h conflict!
|
|
'f' 00-1F linux/ext2_fs.h conflict!
|
|
'f' 00-1F linux/ext3_fs.h conflict!
|
|
'f' 00-0F fs/jfs/jfs_dinode.h conflict!
|
|
'f' 00-0F fs/ext4/ext4.h conflict!
|
|
'f' 00-0F linux/fs.h conflict!
|
|
'f' 00-0F fs/ocfs2/ocfs2_fs.h conflict!
|
|
'g' 00-0F linux/usb/gadgetfs.h
|
|
'g' 20-2F linux/usb/g_printer.h
|
|
'h' 00-7F conflict! Charon filesystem
|
|
<mailto:zapman@interlan.net>
|
|
'h' 00-1F linux/hpet.h conflict!
|
|
'i' 00-3F linux/i2o-dev.h conflict!
|
|
'i' 0B-1F linux/ipmi.h conflict!
|
|
'i' 80-8F linux/i8k.h
|
|
'j' 00-3F linux/joystick.h
|
|
'k' 00-0F linux/spi/spidev.h conflict!
|
|
'k' 00-05 video/kyro.h conflict!
|
|
'l' 00-3F linux/tcfs_fs.h transparent cryptographic file system
|
|
<http://web.archive.org/web/*/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 conflict!
|
|
'm' all linux/mtio.h conflict!
|
|
'm' all linux/soundcard.h conflict!
|
|
'm' all linux/synclink.h conflict!
|
|
'm' 00-19 drivers/message/fusion/mptctl.h conflict!
|
|
'm' 00 drivers/scsi/megaraid/megaraid_ioctl.h conflict!
|
|
'm' 00-1F net/irda/irmod.h conflict!
|
|
'n' 00-7F linux/ncp_fs.h and fs/ncpfs/ioctl.c
|
|
'n' 80-8F linux/nilfs2_fs.h NILFS2
|
|
'n' E0-FF linux/matroxfb.h matroxfb
|
|
'o' 00-1F fs/ocfs2/ocfs2_fs.h OCFS2
|
|
'o' 00-03 mtd/ubi-user.h conflict! (OCFS2 and UBI overlaps)
|
|
'o' 40-41 mtd/ubi-user.h UBI
|
|
'o' 01-A1 linux/dvb/*.h DVB
|
|
'p' 00-0F linux/phantom.h conflict! (OpenHaptics needs this)
|
|
'p' 00-1F linux/rtc.h conflict!
|
|
'p' 00-3F linux/mc146818rtc.h conflict!
|
|
'p' 40-7F linux/nvram.h
|
|
'p' 80-9F linux/ppdev.h user-space parport
|
|
<mailto:tim@cyberelk.net>
|
|
'p' A1-A5 linux/pps.h LinuxPPS
|
|
<mailto:giometti@linux.it>
|
|
'q' 00-1F linux/serio.h
|
|
'q' 80-FF linux/telephony.h Internet PhoneJACK, Internet LineJACK
|
|
linux/ixjuser.h <http://web.archive.org/web/*/http://www.quicknet.net>
|
|
'r' 00-1F linux/msdos_fs.h and fs/fat/dir.c
|
|
's' all linux/cdk.h
|
|
't' 00-7F linux/ppp-ioctl.h
|
|
't' 80-8F linux/isdn_ppp.h
|
|
't' 90 linux/toshiba.h
|
|
'u' 00-1F linux/smb_fs.h gone
|
|
'u' 20-3F linux/uvcvideo.h USB video class host driver
|
|
'v' 00-1F linux/ext2_fs.h conflict!
|
|
'v' 00-1F linux/fs.h conflict!
|
|
'v' 00-0F linux/sonypi.h conflict!
|
|
'v' C0-DF media/pwc-ioctl.h conflict!
|
|
'v' C0-FF linux/meye.h conflict!
|
|
'v' D0-DF drivers/media/video/cpia2/cpia2dev.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 conflict!
|
|
<mailto:hdstich@connectu.ulm.circular.de>
|
|
'z' 40-7F CAN bus card conflict!
|
|
<mailto:oe@port.de>
|
|
'z' 10-4F drivers/s390/crypto/zcrypt_api.h conflict!
|
|
'|' 00-7F linux/media.h
|
|
0x80 00-1F linux/fb.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 E0-EF linux/dn.h PROTOPRIVATE range
|
|
0x89 F0-FF linux/sockios.h SIOCDEVPRIVATE range
|
|
0x8B all linux/wireless.h
|
|
0x8C 00-3F WiNRADiO driver
|
|
<http://www.winradio.com.au/>
|
|
0x90 00 drivers/cdrom/sbpcd.h
|
|
0x92 00-0F drivers/usb/mon/mon_bin.c
|
|
0x93 60-7F linux/auto_fs.h
|
|
0x94 all fs/btrfs/ioctl.h
|
|
0x97 00-7F fs/ceph/ioctl.h Ceph file system
|
|
0x99 00-0F 537-Addinboard driver
|
|
<mailto:buk@buks.ipn.de>
|
|
0xA0 all linux/sdp/sdp.h Industrial Device Project
|
|
<mailto:kenji@bitgate.com>
|
|
0xA2 00-0F arch/tile/include/asm/hardwall.h
|
|
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>
|
|
0xAF 00-1F linux/fsl_hypervisor.h Freescale hypervisor
|
|
0xB0 all RATIO devices in development:
|
|
<mailto:vgo@ratio.de>
|
|
0xB1 00-1F PPPoX <mailto:mostrows@styx.uwaterloo.ca>
|
|
0xB3 00 linux/mmc/ioctl.h
|
|
0xC0 00-0F linux/usb/iowarrior.h
|
|
0xCB 00-1F CBM serial IEC bus in development:
|
|
<mailto:michael.klein@puffin.lb.shuttle.de>
|
|
0xCD 01 linux/reiserfs_fs.h
|
|
0xCF 02 fs/cifs/ioctl.c
|
|
0xDB 00-0F drivers/char/mwave/mwavepub.h
|
|
0xDD 00-3F ZFCP device driver see drivers/s390/scsi/
|
|
<mailto:aherrman@de.ibm.com>
|
|
0xF3 00-3F drivers/usb/misc/sisusbvga/sisusb.h sisfb (in development)
|
|
<mailto:thomas@winischhofer.net>
|
|
0xF4 00-1F video/mbxfb.h mbxfb
|
|
<mailto:raph@8d.com>
|
|
0xF6 all LTTng Linux Trace Toolkit Next Generation
|
|
<mailto:mathieu.desnoyers@efficios.com>
|
|
0xFD all linux/dm-ioctl.h
|