Linux设备驱动程序

时间:2012-07-06 10:33:13

标签: linux-kernel linux-device-driver

我开始使用linux设备驱动程序开发,我经常看到这种代码并且无法理解它的确切作用:

#<linux/fs.h>
loff_t (*llseek) (struct file *, loff_t,int);

llseek方法用于更改文件中的读写位置.loff_t是一个长偏移参数。 我不明白的是上面的语法及其实际工作原理。 有人可以请一些亮点吗?

1 个答案:

答案 0 :(得分:1)

    loff_t (*llseek) (struct file *, loff_t,int);

这只是说llseek是一个指向函数的指针,该函数返回loff_t并带有三个参数。第一个参数是指向struct file的指针。第二个是loff_t。第三个是int

但是,如果仔细观察,您会看到它出现在struct file_operations的声明中。这意味着struct file_operations包含一个名为llseek的成员,该成员是一个指向函数的指针,该函数返回loff_t并获取这三个参数。

顺便说一句,如果您不了解如何使用包含指向函数的指针的结构在C中进行OOP编程,那么您真的没有任何业务可以在内核设备驱动程序附近进行。 (如果您熟悉C ++,那么只需要了解一个带有函数指针的结构基本上就是用C伪造一个类的方式。)