免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2176 | 回复: 2
打印 上一主题 下一主题

【关于linux驱动的问题】 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-02-27 11:48 |只看该作者 |倒序浏览
在学习点灯驱动程序中遇到一下一问题,请各位大虾给予解惑:
  驱动程序中的入口点:
....
static struct file_operations matrix4_leds_fops = {
    owner:    THIS_MODULE,
    ioctl:  leds_ioctl,
};
static int leds_ioctl(struct inode *inode, struct file   *file,   unsigned int cmd, unsigned long arg)
{......      //实现
    }
....

而在上层控制程序中有:
int main(int argc, char **argv)
{
    int on;
    int led_no;
    int fd;
    .....
    fd = open("/dev/leds", 0);
    ...
    ioctl(fd, on, led_no);      //疑惑????
    ....
}

请问上层测试程序ioctl(fd, on, led_no)和驱动中的ioctl函数是怎样调用的啊?他们的参数的个数以及参数的类型好像不一致?那么是怎样匹配的呢?
  请各位大虾给以解答!提前谢了.

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
2 [报告]
发表于 2009-02-27 12:18 |只看该作者

回复 #1 chenmi0201 的帖子

上层函数把参数传到驱动层,驱动根据上层传递的参数,来决定具体的操作。
你可以看一下LDD3的ioctl的驱动实例,就明白了

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
3 [报告]
发表于 2009-02-27 14:15 |只看该作者
对,看一下LDD3中讲解scull 字符设备的ioctl方法就明白了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP