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/ 我觉得这里是char还是void都没什么关系吧,主要看从内核向用户复制数据用的函数的参数 :mrgreen:管它呢,不一致时,最后肯定来个强制类型转换
页:
[1]