linux驱动的read函数的原型问题

发布于 2022-09-30 18:48:08 字数 564 浏览 26 评论 0

经常看到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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

半窗疏影 2022-10-07 18:48:08

我觉得这里是char还是void都没什么关系吧,主要看从内核向用户复制数据用的函数的参数

梅窗月明清似水 2022-10-07 18:48:08

管它呢,不一致时,最后肯定来个强制类型转换

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文