应用层的读写函数与驱动的读写函数关系的联系
是这样的一个问题:
大家都知道在写驱动时读函数是 static int SSX30E_READ(struct file *file, char *buf, size_t len, loff_t *ppos)(这是我自已写的驱动中的一个读函数)。
而在应用层的IO的读函数是 read(fd,&num,sizeof(int))
我想问的是 在应用层的读函数只有三个参数,而在驱动中有四个。当调用驱动程序的时候,只需要传入三个参数么?
另一点,假设static int SSX30E_READ(struct file *file, char *buf, size_t len, loff_t *ppos)的返回值是0,在应用层调用read(fd,&num,sizeof(int))是驱动的返回值决定的吗?(也就是0)
刚开始学写驱动,很多东西很困惑,感觉不难,但苦于自已水平不够,希望各位大大,高手们指导!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
应该返回读取到的数据量吧
static int SSX30E_READ(struct file *file, char *buf, size_t len, loff_t *ppos)的返回值是
未能读到的数据,不是read/write系统调用的返回值
这个loff_t *ppos偏移量是相对文件来说的,你不可能每次读文件都从头开始读起吧,
回复 2# wmmy2008
感谢你的回答!
1. 关于read 的流程 以及相关参数,需要看虚拟文件系统VFS的流程了。。
2.read/write系统调用的返回值,就是驱动的返回值。