linux - 了解设备驱动程序读写函数中的指针
问题描述
每个读/写函数都有一个参数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)
解决方案
是的。但这是个好问题。当您实现驱动程序时,您为读取和写入设置 f_pos,调用代码存储您提供的值。所以在引擎盖下理论上可以有单独的读取和写入文件位置。
但是lseek的描述清楚地表明,读取和写入都有一个位置。否则我们需要一个 read_seek() 和一个 write_seek()。
推荐阅读
- vb.net - vb.net - 定时器在停止和启动时停止工作
- python - 在 matplotlib 中添加具有不同刻度的附加轴
- mysql - 无法将外键约束添加到先前创建的子表
- ios - 检索屏幕区域的城市名称 [Mapbox]
- amazon-web-services - 接收错误“调用 GetAuthorizationToken 操作时发生错误 (AccessDeniedException)”
- excel - Excel电子表格到XML - 循环和数据问题
- r - 根据 R 中的时间戳计算行为状态的持续时间
- pandas - pandas np.where 基于多索引级别
- c++ - C++ 模拟按键
- python - Chatterbot 无法安装