iotctl

//linux内核层提供了构造ioctl命令的宏#include <linux/ioctl.h>
_IO(type,nr)(给没有参数的命令),
_IOR(type, nre, datatype)(给从驱动中读数据的),
_IOW(type,nr,datatype)(给写数据),
_IOWR(type,nr,datatype)(给双向传送).
type 和 number 成员作为参数被传递,
并且 size 成员通过应用 sizeof 到 datatype 参数而得到

驱动层从cmd中获取制定的参数

define _IOC_DIR(nr) (((nr) >> _IOC_DIRSHIFT) & _IOC_DIRMASK)

define _IOC_TYPE(nr) (((nr) >> _IOC_TYPESHIFT) & _IOC_TYPEMASK)

define _IOC_NR(nr) (((nr) >> _IOC_NRSHIFT) & _IOC_NRMASK)

define _IOC_SIZE(nr) (((nr) >> _IOC_SIZESHIFT) & _IOC_SIZEMASK)

_IOC_DIR(nr) //获取nr命令里的方向值
_IOC_TYPE(nr) //获取nr命令里的类型
_IOC_NR(nr) //获取nr命令里的顺序号
_IOC_SIZE(nr) //获取nr命令里的第三个参数大小

https://blog.csdn.net/q2519008/article/details/83180404

https://blog.csdn.net/ForFuture_/article/details/79406903

https://www.cnblogs.com/kernel-style/p/3275038.html

posted @ 2019-11-19 15:07  hostid  阅读(293)  评论(0)    收藏  举报