IOCTL命令号
来源:互联网 发布:linux的用处 编辑:程序博客网 时间:2024/05/21 17:15
_IOXX是驱动IOCTL命令号的宏转换定义,用于对命令进行分类,防止不同类驱动程序具有相同命令号,导至误打开驱动程序而驱动程序功能调用被误操作.
命令码的组织是有一些讲究的,因为我们一定要做到命令和设备是一一对应的,这样才不会将正确的命令发给错误的设备,或者是把错误的命令发给正确的设备,或者是把错误的命令发给错误的设备。这些错误都会导致不可预料的事情发生,而当程序员发现了这些奇怪的事情的时候,再来调试程序查找错误,那将是非常困难的事情。所以在Linux核心中是这样定义一个命令码的:
____________________________________
| 设备类型 | 序列号 | 方向 |数据尺寸|
|----------|--------|------|--------|
| 8 bit | 8 bit |2 bit |8~14 bit|
|----------|--------|------|--------|
这样一来,一个命令就变成了一个整数形式的命令码。但是命令码非常的不直观,所以Linux Kernel中提供了一些宏,这些宏可根据便于理解的字符串生成命令码,或者是从命令码得到一些用户可以理解的字符串以标明这个命令对应的设备类型、设备序列号、数据传送方向和数据传输尺寸。这里确实要说一说,cmd参数在用户程序端由一些宏根据设备类型、序列号、传送方向、数据尺寸等生成,这个整数通过系统调用传递到内核中的驱动程序,再由驱动程序使用解码宏从这个整数中得到设备的类型、序列号、传送方向、数据尺寸等信息,然后通过switch{case}结构进行相应的操作。
- IOCTL命令号
- [内核文档]ioctl 命令号
- ioctl 命令
- ioctl参数命令设置
- 套接字 ioctl 命令
- HID ioctl 命令详解
- ioctl命令编号分析
- HID ioctl 命令详解 .
- ioctl命令详解
- v412的ioctl命令
- ioctl命令构建
- ioctl命令及参数传递
- ioctl函数用的命令
- 24 ioctl的自定义命令
- ioctl
- ioctl
- ioctl
- ioctl
- memcmp和strcmp函数
- Ubuntu12.04安装Flash(Firefox和Chrome)
- 玩转pandaboard之linaro对于Android的编译上的一些优化
- 沁园春.下班路
- asp.net导出csv文件
- IOCTL命令号
- mapper.c 小工具
- eclipse 神技救我一命
- Ubuntu12.04下安装Eclipse
- ORGE构建
- 如何混排Swing和AWT组件
- Mahout简介
- linux基础编程 共享内存 通过消息队列实现同步 shmget
- java 后台封装json数据