Linux 理解设备驱动程序读写函数中的指针

Linux 理解设备驱动程序读写函数中的指针,linux,linux-device-driver,Linux,Linux Device Driver,读/写函数都有一个参数loff\u t*f\u pos。我在示例中看到,在read函数中,我们读取时它会增加指针,在write函数中,我们写入时它会增加指针 两者的指针是否相同 ssize_t scull_write(struct file *filp, const char __user *buf, size_t count,loff_t *f_pos) ssize_t scull_read(struct file *filp, char __user *buf, size_t count,

读/写函数都有一个参数
loff\u t*f\u pos
。我在示例中看到,在read函数中,我们读取时它会增加指针,在write函数中,我们写入时它会增加指针

两者的指针是否相同

ssize_t scull_write(struct file *filp, const char __user *buf, size_t count,loff_t *f_pos)
ssize_t scull_read(struct file *filp, char __user *buf, size_t count, loff_t *f_pos)

对。但这是个好问题。当您实现驱动程序时,您为读取和写入设置了f_pos,并且调用代码存储您提供的值。因此,在引擎盖下,理论上可以有单独的读写文件位置


但的描述清楚地表明,读和写都有一个位置。否则我们将需要一个read_seek()和write_seek()。

这是当前
read
write
必须发生的位置。这取决于司机如何处理不同的情况。可能会重复