首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

ioctl设备控制解决思路

2012-05-23 
ioctl设备控制C/C++ codeif(_IOC_DIR(cmd) & _IOC_READ)err !access_ok(VERIFY_WRITE,(void *)arg,_IOC_

ioctl设备控制

C/C++ code
if(_IOC_DIR(cmd) & _IOC_READ)    err = !access_ok(VERIFY_WRITE,(void *)arg,_IOC_SIZE(cmd));else if(_IOC_DIR(cmd) & _IOC_WRITE)    err = !access_ok(VERIFY_READ,(void *)arg,_IOC_SIZE(cmd));if(err)   return -EFAULT;_IOC_READ_IOC_WRITE //表示什么意思_IOC_SIZE(cmd)//表示什么意思逐行解释一下 谢谢!!!


[解决办法]
宏而已,建议用source insight看Linux kernel source code.
[解决办法]
access_ok:检查一个用户空间的指针是否是有效的。
@type:访问的类型:%VERIFY_READ或者%VERIFY_WRITE。注意%VERIFY_WRITE是%VERIFY_READ的一个超集(如果它是可写的一个块,它也是可以被读出来的)
@addr:所要坚持的用户空间的指针(指向的块开始部分)。
@size:所要坚持的块的大小。

检查一个用户空间的指针所指向的存储块是否有效,就是检查用户传入给驱动的设备指针是否有效

建议看一下 linux设备驱动开发 里面有介绍

热点排行