1 ============= 2 Ioctl Numbers 3 ============= 4 5 19 October 1999 6 7 Michael Elizabeth Chastain 8 <mec@shout.net> 9 10 If you are adding new ioctl's to the kernel, y 11 macros defined in <linux/ioctl.h>: 12 13 ====== == ================================ 14 _IO an ioctl with no parameters 15 _IOW an ioctl with write parameters (cop 16 _IOR an ioctl with read parameters (cop 17 _IOWR an ioctl with both write and read p 18 ====== == ================================ 19 20 'Write' and 'read' are from the user's point o 21 system calls 'write' and 'read'. For example, 22 be _IOW, although the kernel would actually re 23 a GET_FOO ioctl would be _IOR, although the ke 24 data to user space. 25 26 The first argument to _IO, _IOW, _IOR, or _IOW 27 or number from the table below. Because of th 28 many drivers share a partial letter with other 29 30 If you are writing a driver for a new device a 31 unused block with enough room for expansion: 3 32 You can register the block by patching this fi 33 patch to Linus Torvalds. Or you can e-mail me< 34 I'll register one for you. 35 36 The second argument to _IO, _IOW, _IOR, or _IO 37 to distinguish ioctls from each other. The th 38 _IOR, or _IOWR is the type of the data going i 39 out of the kernel (e.g. 'int' or 'struct foo' 40 sizeof(arg) as the third argument as this resu 41 it passes an argument of type size_t. 42 43 Some devices use their major number as the ide 44 long as it is unique. Some devices are irregu 45 convention at all. 46 47 Following this convention is good because: 48 49 (1) Keeping the ioctl's globally unique helps 50 if a program calls an ioctl on the wrong d 51 error rather than some unexpected behaviou 52 53 (2) The 'strace' build procedure automatically 54 defined with _IO, _IOW, _IOR, or _IOWR. 55 56 (3) 'strace' can decode numbers back into usef 57 numbers are unique. 58 59 (4) People looking for ioctls can grep for the 60 this convention is used to define the ioct 61 62 (5) When following the convention, the driver 63 code to copy the parameters between user a 64 65 This table lists ioctls visible from user land 66 most drivers up to 2.6.31, but I know I am mis 67 no attempt to list non-X86 architectures or io 68 69 ==== ===== ================================= 70 Code Seq# Include File 71 (hex) 72 ==== ===== ================================= 73 0x00 00-1F linux/fs.h 74 0x00 00-1F scsi/scsi_ioctl.h 75 0x00 00-1F linux/fb.h 76 0x00 00-1F linux/wavefront.h 77 0x02 all linux/fd.h 78 0x03 all linux/hdreg.h 79 0x04 D2-DC linux/umsdos_fs.h 80 0x06 all linux/lp.h 81 0x07 9F-D0 linux/vmw_vmci_defs.h, uapi/linux 82 0x09 all linux/raid/md_u.h 83 0x10 00-0F drivers/char/s390/vmcp.h 84 0x10 10-1F arch/s390/include/uapi/sclp_ctl.h 85 0x10 20-2F arch/s390/include/uapi/asm/hypfs. 86 0x12 all linux/fs.h 87 linux/blkpg.h 88 0x15 all linux/fs.h 89 0x1b all 90 91 0x20 all drivers/cdrom/cm206.h 92 0x22 all scsi/sg.h 93 0x3E 00-0F linux/counter.h < 94 '!' 00-1F uapi/linux/seccomp.h 95 '#' 00-3F 96 97 '$' 00-0F linux/perf_counter.h, linux/perf_ 98 '%' 00-0F include/uapi/linux/stm.h 99 < 100 '&' 00-07 drivers/firewire/nosy-user.h 101 '*' 00-1F uapi/linux/user_events.h 102 < 103 '1' 00-1F linux/timepps.h 104 105 '2' 01-04 linux/i2o.h 106 '3' 00-0F drivers/s390/char/raw3270.h 107 '3' 00-1F linux/suspend_ioctls.h, 108 kernel/power/user.c 109 '8' all 110 < 111 ';' 64-7F linux/vfio.h 112 ';' 80-FF linux/iommufd.h 113 '=' 00-3f uapi/linux/ptp_clock.h < 114 '@' 00-0F linux/radeonfb.h 115 '@' 00-0F drivers/video/aty/aty128fb.c 116 'A' 00-1F linux/apm_bios.h 117 'A' 00-0F linux/agpgart.h, 118 drivers/char/agp/compat_ioctl.h 119 'A' 00-7F sound/asound.h 120 'B' 00-1F linux/cciss_ioctl.h 121 'B' 00-0F include/linux/pmu.h 122 'B' C0-FF advanced bbus < 123 'B' 00-0F xen/xenbus_dev.h 124 'C' all linux/soundcard.h 125 'C' 01-2F linux/capi.h 126 'C' F0-FF drivers/net/wan/cosa.h 127 'D' all arch/s390/include/asm/dasd.h 128 'D' 40-5F drivers/scsi/dpt/dtpi_ioctl.h 129 'D' 05 drivers/scsi/pmcraid.h 130 'E' all linux/input.h 131 'E' 00-0F xen/evtchn.h 132 'F' all linux/fb.h 133 'F' 01-02 drivers/scsi/pmcraid.h 134 'F' 20 drivers/video/fsl-diu-fb.h 135 'F' 20 linux/ivtvfb.h 136 'F' 20 linux/matroxfb.h 137 'F' 20 drivers/video/aty/atyfb_base.c 138 'F' 00-0F video/da8xx-fb.h 139 'F' 80-8F linux/arcfb.h 140 'F' DD video/sstfb.h 141 'G' 00-3F drivers/misc/sgi-gru/grulib.h 142 'G' 00-0F xen/gntalloc.h, xen/gntdev.h 143 'H' 00-7F linux/hiddev.h 144 'H' 00-0F linux/hidraw.h 145 'H' 01 linux/mei.h 146 'H' 02 linux/mei.h 147 'H' 03 linux/mei.h 148 'H' 00-0F sound/asound.h 149 'H' 20-40 sound/asound_fm.h 150 'H' 80-8F sound/sfnt_info.h 151 'H' 10-8F sound/emu10k1.h 152 'H' 10-1F sound/sb16_csp.h 153 'H' 10-1F sound/hda_hwdep.h 154 'H' 40-4F sound/hdspm.h 155 'H' 40-4F sound/hdsp.h 156 'H' 90 sound/usb/usx2y/usb_stream.h 157 'H' 00-0F uapi/misc/habanalabs.h 158 'H' A0 uapi/linux/usb/cdc-wdm.h 159 'H' C0-F0 net/bluetooth/hci.h 160 'H' C0-DF net/bluetooth/hidp/hidp.h 161 'H' C0-DF net/bluetooth/cmtp/cmtp.h 162 'H' C0-DF net/bluetooth/bnep/bnep.h 163 'H' F1 linux/hid-roccat.h < 164 'H' F8-FA sound/firewire.h 165 'I' all linux/isdn.h 166 'I' 00-0F drivers/isdn/divert/isdn_divert.h 167 'I' 40-4F linux/mISDNif.h 168 'K' all linux/kd.h 169 'L' 00-1F linux/loop.h 170 'L' 10-1F drivers/scsi/mpt3sas/mpt3sas_ctl. 171 'L' E0-FF linux/ppdd.h 172 173 'M' all linux/soundcard.h 174 'M' 01-16 mtd/mtd-abi.h 175 and drivers/mtd/mtdchar.c 176 'M' 01-03 drivers/scsi/megaraid/megaraid_sa 177 'M' 00-0F drivers/video/fsl-diu-fb.h 178 'N' 00-1F drivers/usb/scanner.h 179 'N' 40-7F drivers/block/nvme.c 180 'N' 80-8F uapi/linux/ntsync.h 181 < 182 'O' 00-06 mtd/ubi-user.h 183 'P' all linux/soundcard.h 184 'P' 60-6F sound/sscape_ioctl.h 185 'P' 00-0F drivers/usb/class/usblp.c 186 'P' 01-09 drivers/misc/pci_endpoint_test.c 187 'P' 00-0F xen/privcmd.h 188 'P' 00-05 linux/tps6594_pfsm.h 189 'Q' all linux/soundcard.h 190 'R' 00-1F linux/random.h 191 'R' 01 linux/rfkill.h 192 'R' 20-2F linux/trace_mmap.h 193 'R' C0-DF net/bluetooth/rfcomm.h 194 'R' E0 uapi/linux/fsl_mc.h 195 'S' all linux/cdrom.h 196 'S' 80-81 scsi/scsi_ioctl.h 197 'S' 82-FF scsi/scsi.h 198 'S' 00-7F sound/asequencer.h 199 'T' all linux/soundcard.h 200 'T' 00-AF sound/asound.h 201 'T' all arch/x86/include/asm/ioctls.h 202 'T' C0-DF linux/if_tun.h 203 'U' all sound/asound.h 204 'U' 00-CF linux/uinput.h 205 'U' 00-EF linux/usbdevice_fs.h 206 'U' C0-CF drivers/bluetooth/hci_uart.h 207 'V' all linux/vt.h 208 'V' all linux/videodev2.h 209 'V' C0 linux/ivtvfb.h 210 'V' C0 linux/ivtv.h 211 'V' C0 media/si4713.h 212 'W' 00-1F linux/watchdog.h 213 'W' 00-1F linux/wanrouter.h 214 'W' 00-3F sound/asound.h 215 'W' 40-5F drivers/pci/switch/switchtec.c 216 'W' 60-61 linux/watch_queue.h 217 'X' all fs/xfs/xfs_fs.h, 218 fs/xfs/linux-2.6/xfs_ioctl32.h, 219 include/linux/falloc.h, 220 linux/fs.h, 221 'X' all fs/ocfs2/ocfs_fs.h 222 'X' 01 linux/pktcdvd.h 223 'Z' 14-15 drivers/message/fusion/mptctl.h 224 '[' 00-3F linux/usb/tmc.h 225 < 226 'a' all linux/atm*.h, linux/sonet.h 227 228 'a' 00-0F drivers/crypto/qat/qat_common/adf 229 'b' 00-FF 230 < 231 'b' 00-0F linux/dma-buf.h 232 'c' 00-7F linux/comstats.h 233 'c' 00-7F linux/coda.h 234 'c' 00-1F linux/chio.h 235 'c' 80-9F arch/s390/include/asm/chsc.h 236 'c' A0-AF arch/x86/include/asm/msr.h confli 237 'd' 00-FF linux/char/drm/drm.h 238 'd' 02-40 pcmcia/ds.h 239 'd' F0-FF linux/digi1.h 240 'e' all linux/digi1.h 241 'f' 00-1F linux/ext2_fs.h 242 'f' 00-1F linux/ext3_fs.h 243 'f' 00-0F fs/jfs/jfs_dinode.h 244 'f' 00-0F fs/ext4/ext4.h 245 'f' 00-0F linux/fs.h 246 'f' 00-0F fs/ocfs2/ocfs2_fs.h 247 'f' 13-27 linux/fscrypt.h 248 'f' 81-8F linux/fsverity.h 249 'g' 00-0F linux/usb/gadgetfs.h 250 'g' 20-2F linux/usb/g_printer.h 251 'h' 00-7F 252 < 253 'h' 00-1F linux/hpet.h 254 'h' 80-8F fs/hfsplus/ioctl.c 255 'i' 00-3F linux/i2o-dev.h 256 'i' 0B-1F linux/ipmi.h 257 'i' 80-8F linux/i8k.h 258 'i' 90-9F `linux/iio/*.h` 259 'j' 00-3F linux/joystick.h 260 'k' 00-0F linux/spi/spidev.h 261 'k' 00-05 video/kyro.h 262 'k' 10-17 linux/hsi/hsi_char.h 263 'l' 00-3F linux/tcfs_fs.h 264 265 'l' 40-7F linux/udf_fs_i.h 266 267 'm' 00-09 linux/mmtimer.h 268 'm' all linux/mtio.h 269 'm' all linux/soundcard.h 270 'm' all linux/synclink.h 271 'm' 00-19 drivers/message/fusion/mptctl.h 272 'm' 00 drivers/scsi/megaraid/megaraid_io 273 'n' 00-7F linux/ncp_fs.h and fs/ncpfs/ioctl 274 'n' 80-8F uapi/linux/nilfs2_api.h 275 'n' E0-FF linux/matroxfb.h 276 'o' 00-1F fs/ocfs2/ocfs2_fs.h 277 'o' 00-03 mtd/ubi-user.h 278 'o' 40-41 mtd/ubi-user.h 279 'o' 01-A1 `linux/dvb/*.h` 280 'p' 00-0F linux/phantom.h 281 'p' 00-1F linux/rtc.h 282 'p' 40-7F linux/nvram.h 283 'p' 80-9F linux/ppdev.h 284 < 285 'p' A1-A5 linux/pps.h 286 < 287 'q' 00-1F linux/serio.h 288 'q' 80-FF linux/telephony.h 289 linux/ixjuser.h 290 'r' 00-1F linux/msdos_fs.h and fs/fat/dir.c 291 's' all linux/cdk.h 292 't' 00-7F linux/ppp-ioctl.h 293 't' 80-8F linux/isdn_ppp.h 294 't' 90-91 linux/toshiba.h 295 'u' 00-1F linux/smb_fs.h 296 'u' 00-2F linux/ublk_cmd.h 297 'u' 20-3F linux/uvcvideo.h 298 'u' 40-4f linux/udmabuf.h 299 'v' 00-1F linux/ext2_fs.h 300 'v' 00-1F linux/fs.h 301 'v' 00-0F linux/sonypi.h 302 'v' 00-0F media/v4l2-subdev.h 303 'v' 20-27 arch/powerpc/include/uapi/asm/vas 304 'v' C0-FF linux/meye.h 305 'w' all 306 'y' 00-1F 307 < 308 'z' 00-3F 309 < 310 'z' 40-7F 311 < 312 'z' 10-4F drivers/s390/crypto/zcrypt_api.h 313 '|' 00-7F linux/media.h 314 0x80 00-1F linux/fb.h 315 0x81 00-1F linux/vduse.h 316 0x89 00-06 arch/x86/include/asm/sockios.h 317 0x89 0B-DF linux/sockios.h 318 0x89 E0-EF linux/sockios.h 319 0x89 F0-FF linux/sockios.h 320 0x8A 00-1F linux/eventpoll.h 321 0x8B all linux/wireless.h 322 0x8C 00-3F 323 324 0x90 00 drivers/cdrom/sbpcd.h 325 0x92 00-0F drivers/usb/mon/mon_bin.c 326 0x93 60-7F linux/auto_fs.h 327 0x94 all fs/btrfs/ioctl.h 328 and linux/fs.h 329 0x97 00-7F fs/ceph/ioctl.h 330 0x99 00-0F 331 < 332 0xA0 all linux/sdp/sdp.h 333 < 334 0xA1 0 linux/vtpm_proxy.h 335 0xA2 all uapi/linux/acrn.h 336 0xA3 80-8F 337 < 338 0xA3 90-9F linux/dtlk.h 339 0xA4 00-1F uapi/linux/tee.h 340 0xA4 00-1F uapi/asm/sgx.h < 341 0xA5 01-05 linux/surface_aggregator/cdev.h 342 < 343 0xA5 20-2F linux/surface_aggregator/dtx.h 344 < 345 0xAA 00-3F linux/uapi/linux/userfaultfd.h 346 0xAB 00-1F linux/nbd.h 347 0xAC 00-1F linux/raw.h 348 0xAD 00 349 < 350 0xAE 00-1F linux/kvm.h 351 < 352 0xAE 40-FF linux/kvm.h 353 < 354 0xAE 20-3F linux/nitro_enclaves.h 355 0xAF 00-1F linux/fsl_hypervisor.h 356 0xB0 all 357 < 358 0xB1 00-1F 359 < 360 0xB2 00 arch/powerpc/include/uapi/asm/pap 361 362 0xB2 01-02 arch/powerpc/include/uapi/asm/pap 363 364 0xB3 00 linux/mmc/ioctl.h 365 0xB4 00-0F linux/gpio.h < 366 0xB5 00-0F uapi/linux/rpmsg.h < 367 0xB6 all linux/fpga-dfl.h 368 0xB7 all uapi/linux/remoteproc_cdev.h < 369 0xB7 all uapi/linux/nsfs.h < 370 0xB8 01-02 uapi/misc/mrvl_cn10k_dpi.h 371 0xC0 00-0F linux/usb/iowarrior.h 372 0xCA 00-0F uapi/misc/cxl.h 373 0xCA 10-2F uapi/misc/ocxl.h 374 0xCA 80-BF uapi/scsi/cxlflash_ioctl.h 375 0xCB 00-1F 376 < 377 0xCC 00-0F drivers/misc/ibmvmc.h 378 0xCD 01 linux/reiserfs_fs.h 379 0xCE 01-02 uapi/linux/cxl_mem.h 380 0xCF 02 fs/smb/client/cifs_ioctl.h 381 0xDB 00-0F drivers/char/mwave/mwavepub.h 382 0xDD 00-3F 383 < 384 0xE5 00-3F linux/fuse.h 385 0xEC 00-01 drivers/platform/chrome/cros_ec_d 386 0xEE 00-09 uapi/linux/pfrut.h 387 0xF3 00-3F drivers/usb/misc/sisusbvga/sisusb 388 < 389 0xF6 all 390 < 391 0xF8 all arch/x86/include/uapi/asm/amd_hsm 392 < 393 0xFD all linux/dm-ioctl.h 394 0xFE all linux/isst_if.h 395 ==== ===== =================================
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.