《你知道linux命令码(_IO宏)?.doc》由会员分享,可在线阅读,更多相关《你知道linux命令码(_IO宏)?.doc(2页珍藏版)》请在三一文库上搜索。
1、你知道linux命令码(_IO宏)?在ioctl.h头文件中定义了命令码命令码用一个32位的整型数表达bit2931表示命令传输的方向,bit1629记录要传输的数据的大小,bit815表示设备类型(一般用一个ASCII表示),bit07表示命令编号其中数据大小可以和方向的bit29重叠#ifndef _SPARC_IOCTL_H#define _SPARC_IOCTL_H#define _IOC_NRBITS 8 /命令#define _IOC_TYPEBITS 8 /设备类型#define _IOC_SIZEBITS 13 /* Actually 14, see below. */ /数据
2、大小#define _IOC_DIRBITS 3 /方向#define _IOC_NRMASK (1 _IOC_DIRSHIFT) 用法:dir =_IOC_DIR(nr) /根据命令获取传输方向type =_IOC_TYPE(nr) /根据命令获取类型nr =_IOC_NR(nr) /根据命令获取类型命令size =_IOC_SIZE(nr) /根据命令获取传输数据大小/cmd=_IOC(dir,type,nr,size) /根据传输方向,类型,命令,传输数据大小构成命令码cmdcmd=_IOW(type,nr,size) /根据类型,命令,传输数据类型生成读方向命令码cmd=_IOR(ty
3、pe,nr,size) /根据类型,命令,传输数据类型生成写方向命令码cmd=_IOWR(type,nr,size) /根据类型,命令,传输数据类型生成读写方向命令码cmd=_IOW_BAD(type,nr,size) /根据类型,命令,传输数据生成读方向命令码cmd=_IOR_BAD(type,nr,size) /根据类型,命令,传输数据生成写方向命令码cmd=_IOWR_BAD(type,nr,size) /根据类型,命令,传输数据生成读写方向命令码cmd=_IO(type,nr) /根据类型,命令生成没数据传输的无方向的命令码实例:#define BINDER_WRITE_READ _I
4、OWR(b, 1, struct binder_write_read) /读写命令#define BINDER_SET_IDLE_TIMEOUT _IOW(b, 3, int64_t) /未实现#define BINDER_SET_MAX_THREADS _IOW(b, 5, size_t) /设置最大线程数#define BINDER_SET_IDLE_PRIORITY_IOW(b, 6, int) /未实现#define BINDER_SET_CONTEXT_MGR _IOW(b, 7, int) /设置binder上下文管理者#define BINDER_THREAD_EXIT _IOW(b, 8, int) /删除线程信息#define BINDER_VERSION _IOWR(b, 9, struct binder_version) /返回版本