门关键词: 摩托车三相整流器 什么是监听耳机 河南隐形耳机 电子塑料零件 过压保护开关 高压负荷开关 惠威家庭影院音箱
IC库存(8958万) PDF资料(329万) IC价格 IC求购 资讯 技术资料
电子元器件搜索:
维库电子市场网是知名的电子元器件交易网站,为电子生产企业提供IC库存和技术资料查询服务。
请教ioctl参数问题
新闻出处:21ic 发布时间: 2007-10-20
gooogleman 发布于 2007-10-18 11:16:00
 请教ioctl参数问题
int (*ioctl) (struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg); 的参数arg是干什么的
static int leds_ioctl(struct inode *inode,struct file *file,unsigned int cmd,[52RD.com]
unsigned long arg){
switch(cmd){[
case 0:
case 1:
if (arg > 4){
return -EINVAL;
}][52RD.com]
write_gpio_bit(led_table[arg],!cmd);
default:
return -EINVAL;
}
}
看不懂arg是哪里传来的参数,刚学linux请大侠指教。



阿南 发布于 2007-10-18 14:06:00
arg是用户程序以unsinged long形式被传递给驱动程序的,用途可以由您自己决定


gooogleman 发布于 2007-10-20 12:32:00
int (*ioctl) (struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg);
inode 和 filp 指针是对应应用程序传递的文件描述符 fd 的值, 和传递给 open 方法的相同参数. cmd
参数从用户那里不改变地传下来, 并且可选的参数 arg 参数以一个 unsigned long 的形式传递, 不管
它是否由用户给定为一个整数或一个指针. 如果调用程序不传递第 3 个参数, 被驱动操作收到的
arg 值是无定义的. 因为类型检查在这个额外参数上被关闭, 编译器不能警告你如果一个无效的参
数被传递给 ioctl, 并且任何关联的错误将难以查找.
如果你可能想到的, 大部分 ioctl 实现包括一个大的 switch 语句来根据 cmd 参数, 选择正确的做法.
不同的命令有不同的数值, 它们常常被给予符号名来简化编码. 符号名通过一个预处理定义来安
排. 定制的驱动常常声明这样的符号在它们的头文件中; scull.h 为 scull 声明它们. 用户程序必须, 当
然, 包含那个头文件来存取这些符号.


关闭】 【打印
 
相关专题
 
友情链接:
© 2007 电子元件网 网站地图