字符设备控制
来源:互联网 发布:手机淘宝官网首页 编辑:程序博客网 时间:2024/04/28 20:38
原文地址:http://blog.csdn.net/u011012049/article/details/48088149
大部分驱动程序除了读写功能外,还需要具备控制设备的能力,比如对于串口,需要具备修改波特率的功能。
在用户空间,使用ioctl()函数作为系统调用来控制设备
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
当应用程序使用ioctl系统调用时,驱动程序的响应函数根据Linux版本不同将由不同函数来响应:
①2.6.36 之前的内核
- 1
- 1
②2.6.36之后的内核
- 1
- 1
实现设备控制函数编写主要有两步:
1.定义命令
2.实现设备方法,即编写实现命令的unlocked_ioctl函数
命令从其实质而言就是一个整数, 但为了让这个整数具备更好的可读性,我们通常会把这个整数分为几个段:类型(8位),序号,参数传送方向,参数长度。
①Type(类型/幻数):表明这是属于哪个设备的命令
②Number(序号):用来区分同一设备的不同命令
③Direction:参数传送的方向,可能的值是 _IOC_NONE(没有数据传输),_IOC_READ,_IOC_WRITE(向设备写入参数)
④Size: 参数长度
为了开发容易,Linux系统提供了下面的宏来帮助定义命令:
①_IO(type,nr):不带参数的命令
②_IOR(type,nr,datatype):从设备中读参数的命令
③_IOW(type,nr,datatype):向设备写入参数的命令
例:
- 1
- 2
- 1
- 2
一个字符正好是8位,所以可以用一个字符来表示类型,这显得较为简略;int表示传输的参数是int类型的。
unlocked_ioctl函数的实现通常是由switch语句完成。但是,当命令号不能匹配任何一个设备所支持的命令时,返回-EINVAL。
编程模型:
- linux 字符设备控制
- 字符设备控制技术
- 字符设备控制技术
- 字符设备控制
- 字符设备控制技术
- 字符设备控制
- 字符设备控制
- 并发控制的字符设备驱动程序
- Linux字符设备驱动程序之并发控制
- 字符设备实现控制led的驱动
- 字符设备实现控制led的驱动
- 字符设备驱动控制led灯
- 【14】Linux-字符设备控制技术
- ioctl---字符设备的控制技术
- LED驱动程序---字符设备控制技术
- 高级字符设备驱动-Ioctl设备控制笔记
- linux高级字符设备驱动(一 设备Ioctl控制)
- 高级字符设备驱动-Ioctl设备控制笔记
- Agent不能同步master的解决方法
- Hadoop源码之----hadoop-common-project(一、工程目录结构)
- win7一键拖动生成快速启动栏
- 10.字符设备驱动模型(1)-使用字符驱动程序
- 经典DP HDU 2084 数塔
- 字符设备控制
- 电脑蓝屏重启后,studio无法认出Android环境 setup JDK 的解决办法(转载)
- Spring4 实战笔记(3):面向切面编程
- HTML调用PHP的方法
- TODO:macOS上ThinkPHP5和Semantic-UI集成
- 一些过程中可能会用到的工具之类的
- css样式分离合并与模块化
- 4-12 二叉搜索树的操作集 (30分)
- PHP变量与关联数组的相互转换 (extract 与 compact),工作中很实用!