ioctl参数cmd=2错误
2015-11-07 15:52
351 查看
在写内核驱动的时候,用到了ioctl。自己定义cmd作为ioctl的参数。如下:
ioctl底层调用代码:
在应用层调用ioctl的时候,当传入的cmd=2时会出现错误。
ioctl返回值为-1。错误号errno:14, bad address。
上网查阅才知道需要使用_IOWR等宏来生成cmd命令,而不能自己写。
虽然自己写也可以,但很有可能和系统的其他cmd命令冲突。刚好当ioctl的cmd=2使就出现了错误。
从新定义cmd如下:
enum CMD { LEVEL_DOWN, LEVEL_UP, GPIO_INPUT, GPIO_OUTPUT, GPIO_GET, };
ioctl底层调用代码:
static long led_ioctl(struct file *file, unsigned int cmd, unsigned long arg) { }
在应用层调用ioctl的时候,当传入的cmd=2时会出现错误。
ioctl返回值为-1。错误号errno:14, bad address。
上网查阅才知道需要使用_IOWR等宏来生成cmd命令,而不能自己写。
虽然自己写也可以,但很有可能和系统的其他cmd命令冲突。刚好当ioctl的cmd=2使就出现了错误。
从新定义cmd如下:
#define TYPE 'S' #define LEVEL_DOWN _IOWR(TYPE, 0, int) #define LEVEL_UP _IOWR(TYPE, 1, int) #define GPIO_INPUT _IOWR(TYPE, 2, int) #define GPIO_OUTPUT _IOWR(TYPE, 3, int) #define GPIO_GET _IOWR(TYPE, 4, int)
相关文章推荐
- get向服务器提交数据
- 随笔,第一天
- Android APK反编译就这么简单 详解(附图)
- 面向对象技术与UML的基本构造
- UML之状态图
- [04]注释
- java随堂笔记
- 【C++】单链表的实现
- D3D中的纹理贴图
- Java 反射机制
- [03]关键字、标识符
- [LeetCode] Min Stack
- 结构体定义 typedef struct 用法
- poj 2236 Wireless Network(并查集)
- post 登录需要token
- python之poplib模块下载并解析邮件
- Android过度绘制深度优化---View提前绘制
- Java实现将两个数之和用标准形式输出
- Java线程,多线程,线程同步,以及Java回调线程,还有难懂的synchronized
- [C++] const object