Linux还没有回答这个问题

时间:2018-02-26 18:57:52

标签: linux-device-driver embedded-linux

ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);
int (*open) (struct inode *, struct file *);

这个struct file*指向哪里?如果我们将自己的指针变量赋给struct file*struct inode*。它指向哪里?到底是怎么回事?我在驱动程序中找到文件操作中的声明struct.and定义相同的声明。但是在驱动程序中,struct file *struct inode*的指针无处不在?从哪里获得这些参数变量?或者我们可以随意提供变量吗? 如果不是这样的话,我们给出的随机变量如何达到目的。 我认为首先提出这个问题的人需要一个答案。 如果你知道的话,有人可以简单地解释一下吗?

1 个答案:

答案 0 :(得分:1)

read()open()是用户空间函数,它们对文件描述符进行操作。当用户运行使用这些功能的应用程序时,内核会转换其调用并为实例化该文件的驱动程序填充必要的信息。内核类型"重定向"用户空间调用并使用填写的适当参数调用驱动程序read()open()

我建议您阅读LDD3, Chapter 3中的驱动程序文件操作。