06 高级字符驱动

本文深入探讨Linux内核中struct file_operations的使用,解释其与struct inode和struct file的区别,以及ioctl操作在不同版本的变化。通过解析相关链接,提供对Linux文件系统操作原理的理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

	int (*ioctl) (struct inode *, struct file *, unsigned, unsigned long);


struct file_operations

是一个字符设备把驱动的操作和设备号联系在一起的纽带,是一系列指针的集合,每个被打开的文件都对应于一系列的操作,这就是file_operations,用来执行一系列的系统调用。


struct  file

代表一个打开的文件,在执行file_operation中的open操作时被创建,这里需要注意的是与用户空间inode指针的区别,一个在内核,而file指针在用户空间,由c库来定义。

struct inode

被内核用来代表一个文件,注意和struct file的区别,struct inode一个是代表文件,struct 
file一个是代表打开的文件

kernel 2.6.35 及之前的版本中struct file_operations 一共有3个ioctl :
ioctl,unlocked_ioctl和compat_ioctl
现在只有unlocked_ioctl和compat_ioctl 了

http://blog.sina.com.cn/s/blog_693301190100vyhh.html

http://blog.youkuaiyun.com/yeqishi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值