首页 > 解决方案 > 了解设备驱动程序读写函数中的指针

问题描述

每个读/写函数都有一个参数loff_t *f_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)

标签: linuxlinux-device-driver

解决方案


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

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


推荐阅读