ioctl的相关理解

ioctl写的文章感觉也挺多的,我这里是总结一下:

参考文档:http://lexandros.blog.163.com/blog/static/18556658820127281636559/

这个写的挺好的,可以作为参考。

ioctl的作用是用户空间和内核空间的通讯方式之一。我在应用层调用ioctl的话,底层硬件驱动中也需要做一个相应的ioctl函数,二者对应起来,才能实现用户层的调用。

 

应用层ioctl的函数原型是:

intioctl(int fd, unsigned longcmd,...);

在linux下,所有的东西都是文件,所以对设备什么的都按照文件来进行操作,利用open、read、write、close等函数来进行操作,fd就是open等函数的文件描述符,是一个int类型。

cmd为命令参数。

 

驱动层的ioctl函数的原型,在file_operations结构体中有相应描述:

int(*ioctl)(struct inode *inode, struct file *filp, unsigned int cmd, unsignedlong arg);

inode为文件打开的节点,filp为传递的文件指针,cmd为命令参数,arg为传递的其他参数。

我们这里主要管第三个和第四个参数。

 

关于传递的cmd命令,可以自己定义在相应的头文件中。

应用层的ioctl函数,一般也就是三个参数。在V4L2中,命令就定义在videodev2.h中。

反正就是操作io的,具体实现功能还是根据命令来。

 

菜鸟欢迎拍砖

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值