ioctl命令构建

来源:互联网 发布:淘宝店招商 编辑:程序博客网 时间:2024/05/01 17:09
/*用如下宏来组建命令,保证命令唯一性*/
//一个命令组建的时候包含以下几个部分,有些命令可以带数据
             方向类型序列数据
#define _IOC(dir,type,nr,size) \
    (((dir)  << _IOC_DIRSHIFT) | \
     ((type) << _IOC_TYPESHIFT) | \
     ((nr)   << _IOC_NRSHIFT) | \
     ((size) << _IOC_SIZESHIFT))

/*不带数据的命令组建宏*/
#define _IO(type,nr)        _IOC(_IOC_NONE,(type),(nr),0)
/*带数据的读命令组建宏*/
#define _IOR(type,nr,size)    _IOC(_IOC_READ,(type),(nr),(_IOC_TYPECHECK(size)))
/*带数据的写命令组建宏*/
#define _IOW(type,nr,size)    _IOC(_IOC_WRITE,(type),(nr),(_IOC_TYPECHECK(size)))
/*带命令的可读可写组建宏*/
#define _IOWR(type,nr,size)    _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),(_IOC_TYPECHECK(size)))


例如:
#define LED_ON        1
#define LED_OFF        0
可以改为如下组建方法:
#define MAGIC    'L'

#define LED_ON  _IO(MAGIC,1)
#define LED_OFF _IO(MAGIC,0)
0 0
原创粉丝点击