问个关于的设备驱动的弱问题。。。。
在 struct file_opertion 中 open 和 ioctl 的参数都有 (struct inode *, struct file *) 一个是inode 结构的指针, 一个是file结构的指针。<br /><br />如下所示:<br />int (*open) (struct inode *, struct file *);<br />int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long);<br /><br />我的问题是:<br /><br />可我看到在应用层的设备测试函数 在调用open() 时只写成了 open("/dev/test_io",O_RDWR); 这个好像并不是与 在struct file_operation {....} 中的open的 指定参数类型一致呀,这是咋回事呢??<br /><br />好像是 file_operation 的read是 应用层read()的系统调用?<br />inode 和 file 是在哪里被附值的呢?<br />补充
谁知道read()系统调用的原形在哪个目录下呢?re
应用层的open和驱动层(内核)的open不是一回事,所以函数参数也不一致,ioctl相同,记得都经过了转换,但驱动层的open返回值的确是返回给了应用层的open<br />想弄明白就看一下驱动代码吧re
应用程的 open和read都是库函数,封装了系统调用open,read没看出哪不一样来.
int (*open) (struct inode *, struct file *);<br />open("/dev/test_io",O_RDWR);<br /><br />大写的是宏定义, 查头文件(或直接看注释). inode读入的就是字符串, 可grep查找源定义.
页:
[1]