文档目录:linux-imx-4.1.15\Documentation\ioctl\ioctl-number.txt

如果要向内核添加新的 ioctl,则应使用 <linux/ioctl.h> 中定义的 _IO 宏:

  • _IO:没有参数的 ioctl
  • _IOW:带有写入参数的 ioctlcopy_from_user);
  • _IOR:带有读取参数的 ioctlcopy_to_user);
  • _IOWR:具有写入和读取参数的 ioctl

“写”和“读”是从用户的角度来看的,就像系统调用“写”和“读”一样。 例如,一个 SET_FOO ioctl 将是 _IOW,尽管内核实际上会从用户空间读取数据; GET_FOO ioctl 将是 _IOR,尽管内核实际上会将数据写入用户空间。

_IO_IOW_IOR_IOWR 的第一个参数是下表中的标识字母或数字。 由于驱动程序众多,许多驱动程序与其他驱动程序共享一个部分字母。

如果您正在为新设备编写驱动程序并且需要一个字母,请选择一个具有足够扩展空间的未使用块:32 到 256 个 ioctl 命令。 您可以通过修补此文件并将修补程序提交给 Linus Torvalds 来注册块。 或者您可以通过 mec@shout.net 给我发送电子邮件,我会为您注册一个。

_IO_IOW_IOR_IOWR 的第二个参数是用于区分 ioctl 的序列号。 _IOW_IOR_IOWR 的第三个参数是进入内核或从内核出来的数据的类型(例如 “int”v或 “struct foo”)。 注意! 不要使用 sizeof(arg) 作为第三个参数,因为这会导致您的 ioctl 认为它传递了 size_t 类型的参数。

一些设备使用它们的主设备号作为标识符; 这没关系,只要它是唯一的。 有些设备是不规则的,根本不遵循任何惯例。

遵循这个约定是好的,因为:

1、保持 ioctl 的全局唯一性有助于错误检查:如果程序在错误的设备上调用 ioctl,它将得到错误而不是一些意外行为。

2、'strace' 构建过程会自动查找使用 _IO_IOW_IOR_IOWR 定义的 ioctl 编号。

3、当数字唯一时,“strace”可以将数字解码回有用的名称。

4、当使用此约定定义 ioctl 编号时,寻找 ioctl 的人可以更轻松地使用 grep 查找它们。

5、当遵循约定时,驱动程序代码可以使用通用代码在用户空间和内核空间之间复制参数。

此表列出了 Linux/x86 用户国家/地区可见的 ioctl。 它包含最多 2.6.31 的大多数驱动程序,但我知道我缺少一些。 没有尝试从驱动程序/暂存/列出非 X86 架构或 ioctl

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
0x10    10-1F   arch/s390/include/uapi/sclp_ctl.h
0x10    20-2F   arch/s390/include/uapi/asm/hypfs.h
0x12    all     linux/fs.hlinux/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>
';'       64-7F   linux/vfio.h
'@'      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'       01      linux/mei.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'       A0      uapi/linux/usb/cdc-wdm.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>
'H'       F8-FA   sound/firewire.h
'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!
'W'       00-1F   linux/watchdog.h    conflict!
'W'       00-1F   linux/wanrouter.h   conflict!       (pre 3.9)
'W'       00-3F   sound/asound.h      conflict!
'X'       all     fs/xfs/xfs_fs.h     conflict!and     fs/xfs/linux-2.6/xfs_ioctl32.hand     include/linux/falloc.hand     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/>
'a'       00-0F   drivers/crypto/qat/qat_common/adf_cfg_common.h  conflict! qat driver
'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'       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!
'h'       80-8F   fs/hfsplus/ioctl.c
'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!
'k'       10-17   linux/hsi/hsi_char.h    HSI character device
'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 LineJACKlinux/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-FF   linux/meye.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
0xCA    00-0F   uapi/misc/cxl.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>
0xEC    00-01   drivers/platform/chrome/cros_ec_dev.h   ChromeOS EC driver
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

Linux 驱动开发 五十六:《ioctl-number.txt》翻译相关推荐

  1. Linux 驱动开发 四十六:Linux MISC驱动实验

    misc 的意思是混合.杂项的,因此MISC 驱动也叫做杂项驱动,也就是当我们板子上的某些外设无法进行分类的时候就可以使用 MISC 驱动. MISC 驱动其实就是最简单的字符设备驱动,通常嵌套在 p ...

  2. Linux驱动开发(十八)---网络(网卡)驱动学习

    前文回顾 <Linux驱动开发(一)-环境搭建与hello world> <Linux驱动开发(二)-驱动与设备的分离设计> <Linux驱动开发(三)-设备树> ...

  3. Linux驱动开发(十五)---如何使用内核现有驱动(显示屏)

    前文回顾 <Linux驱动开发(一)-环境搭建与hello world> <Linux驱动开发(二)-驱动与设备的分离设计> <Linux驱动开发(三)-设备树> ...

  4. [Linux驱动开发五]实现ioctl函数

    目录 一.前言 1.1 ioctl用来做什么? 1.2 ioctl和unlock_ioctl区别? (1)ioctl()主要用于应用层系统调用 (2)unlock_ioctl主要用于驱动层系统调用 1 ...

  5. Linux 驱动开发 三十五:Linux 内核时钟管理

    参考: linux时间管理,时钟中断,系统节拍_u010936265的博客-CSDN博客_系统节拍时钟中断 Linux内核时钟系统和定时器实现_anonymalias的专栏-CSDN博客_linux内 ...

  6. Linux驱动开发(十)---树莓派输入子系统学习(红外接收)

    前文回顾 <Linux驱动开发(一)-环境搭建与hello world> <Linux驱动开发(二)-驱动与设备的分离设计> <Linux驱动开发(三)-设备树> ...

  7. 【Visual C++】游戏开发五十六 浅墨DirectX教程二十三 打造游戏GUI界面(一)

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/16384009 作者:毛星 ...

  8. Linux驱动开发(十八):I2C驱动

    简介 I2C是我们在单片机开发时时常会用到的通讯接口,用来与一些字符型设备进行通信,比如:陀螺仪.温度传感器等等,同样的在Linux下I2C驱动也是十分重要的.有了操作系统的加持,我们不用像在32上那 ...

  9. linux驱动开发(十)——misc杂散设备

    1:什么是misc驱动模型? 2:为什么要有misc驱动模型? 3:misc驱动模型的代码实现 4:misc驱动模型实战 参考: http://blog.csdn.net/yicao821/artic ...

最新文章

  1. 十个最常用的JVM 配置参数
  2. 整数实现求整数和算法
  3. Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.3:compile (default-compile)
  4. LINUX下UDP实现消息镜像通信,linux环境下基于udp socket简单聊天通信
  5. 剑指Offer - 面试题53 - II. 0~n-1中缺失的数字(二分、位运算)
  6. python计时器单位,python(计时器)
  7. 同步请求和异步请求的区别
  8. 小程序表单提交,服务端推送模板消息通知
  9. Pandas系列(十四)数据转换函数map、apply、applymap以及分组apply
  10. Java从入门到精通 第18章 包及访问权限
  11. 如何做伪原创视频 视频md5修改器吾爱
  12. mysql mariadb libs_mysql 安装 【解决】mariadb-libs is obsoleted by *** - Ctrl+CCtrl+V - ITeye博客...
  13. mysql虚拟列表_动态网页制作-官方版合集下载-多特
  14. [Excel知识技能] 将数值格式数字转换为文本格式
  15. 什么是nvm,nvm详解
  16. C#基于虹软SDK人脸识别签到系统
  17. python 人民币兑美元汇率代码_Python获取美元人民币实时汇率
  18. 初级程序员必学Java 教程
  19. GPS接收机(一)概述
  20. Oracle函数执行提示“ORA-01422”,“ORA-06512”错误

热门文章

  1. python基础学习——员工管理系统
  2. Rete算法相关链接汇总
  3. 单片机IO口输入模式
  4. PPT的粘贴选项没有选项
  5. 基于AnyShare Family 7的Java SDK集成开发指南
  6. 显著性检测论文集合【1】
  7. 不会英语的我们,可以学会MAYA吗?
  8. 洛谷P4363 [九省联考2018]一双木棋chess
  9. 洛谷 P4363 [九省联考2018]一双木棋chess 题解
  10. 短视频云端批量混剪实操指南