linux通过inode号打开文件,linux-为什么使用两个参数(struct inode *,struct file *)进行打开调用?...

我正在实现一个字符驱动程序.所以我正在注册文件操作.当我注册读取功能时,我以此方式提取了次要号码

myread(struct file * file, char __user * ubuf, size_t lbuf, loff_t *offset)

{

int minor;

minor = MINOR(file->f_path.dentry->d_inode->f_pos->i_rdev);

.......

此规则也适用于公开通话.

myopen(struct inode * inode, struct file * file)

struct文件定义具有对struct inode的引用.因此,一个参数足以进行公开通话.

我的问题是:

>为什么打开有两个参数? (或)为什么读取没有struct inode *参数?

>为了在读取呼叫中提取次要号码,我使用了上面的说明.要查找定义和头文件,我花了1小时30分钟.有什么简单的方法可以找到结构的定义?

>通过结构文件可以找到结构索引节点引用的方法有几种,什么是最佳方法?

解决方法:

您不得使用该构造搜索索引节点.打开文件后,文件甚至目录可能已被删除.

>在打开函数中,您从inode查找您自己的数据(或分配您自己的数据),并设置file-> private_data指针;和

>在读取功能中,然后使用file-> private_data访问您自己的内容.

标签:embedded-linux,linux-kernel,linux-device-driver,linux

来源: https://codeday.me/bug/20191030/1966615.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值