字符设备控制

一:字符设备控制理论:

大部分驱动程序除了提供读写设备能力,还需要具备设备控制的能力。例如改变波特率。

控制设备使用ioctl系统调用函数。当使用ioctl系统调用时驱动程序将由:2.6.36之前的内核使用ioctl,

2.6.36以后的内核使用unlocked_ioctl

cmd通过上述两个函数发送下去。

二:实现字符设备控制:

定义命令:命令就是一个整数,通常这个整数被分为几段:类型   type、序号    number、参数传输方向     direction、参数长度    size。

linux下提供了宏来帮助定义命令:

_IO(type,nr)   :不带参数的命令

_IOR(type , nr , datatype)   :向设备读取参数的命令

_IOW(type , nr , datatype)   :向设备写入参数的命令

   例如:#define  MEM_MAGIC   'm'   定义幻数

   #define   MEM_SET_IOW(MEM_MAGIC , 0 , int)

unlocked _ioctl通常是根据命令执行一个switch语句,但是均不匹配时,返回-EINVAL

编程模型:

switch cmd

case   命令A:

执行A操作

case   命令B:

执行B操作

case   命令C:

执行C操作

Default:

return   -EINVAL











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值