linux驱动的read函数的原型问题
经常看到linux的驱动的read函数申明形式入下:
ssize_t read(struct file *file, char __user *userbuf, size_t bytes, loff_t *off)
有点疑问的是为什么userbuf的申明类型为char, 它的原型是不是该是void,也就是说userbuf可以为任意类型?我觉得应该是,但是在实际编程中,我看到的几乎都是char型的!
另外,在用户空间,read的原型是这样的:
size_t read(int fildes,void *buf,size_t nbytes, )
那是不是也说明buf可以为任意类型,另外,有没有相关的详细调用流程?最注意的是怎么从sys_read到驱动的read的调用?
各位大大有没有看到过类似文章?
这篇讲的倒是蛮好的,可惜到IO调度往下就没有深入讲了
http://www.ibm.com/developerworks/cn/linux/l-cn-read/
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我觉得这里是char还是void都没什么关系吧,主要看从内核向用户复制数据用的函数的参数
管它呢,不一致时,最后肯定来个强制类型转换