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*
的指针无处不在?从哪里获得这些参数变量?或者我们可以随意提供变量吗?
如果不是这样的话,我们给出的随机变量如何达到目的。
我认为首先提出这个问题的人需要一个答案。
如果你知道的话,有人可以简单地解释一下吗?
答案 0 :(得分:1)
read()
和open()
是用户空间函数,它们对文件描述符进行操作。当用户运行使用这些功能的应用程序时,内核会转换其调用并为实例化该文件的驱动程序填充必要的信息。内核类型"重定向"用户空间调用并使用填写的适当参数调用驱动程序read()
和open()
。
我建议您阅读LDD3, Chapter 3中的驱动程序文件操作。