rockingliu 发表于 2008-9-22 13:19

问个关于的设备驱动的弱问题。。。。

在&nbsp;struct&nbsp;file_opertion&nbsp;中&nbsp;open&nbsp;和&nbsp;ioctl&nbsp;的参数都有&nbsp;(struct&nbsp;inode&nbsp;*,&nbsp;struct&nbsp;file&nbsp;*)&nbsp;一个是inode&nbsp;结构的指针,&nbsp;一个是file结构的指针。<br /><br />如下所示:<br />int&nbsp;(*open)&nbsp;(struct&nbsp;inode&nbsp;*,&nbsp;struct&nbsp;file&nbsp;*);<br />int&nbsp;(*ioctl)&nbsp;(struct&nbsp;inode&nbsp;*,&nbsp;struct&nbsp;file&nbsp;*,&nbsp;unsigned&nbsp;int,&nbsp;unsigned&nbsp;long);<br /><br />我的问题是:<br /><br />可我看到在应用层的设备测试函数&nbsp;在调用open()&nbsp;时只写成了&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;open(&quot;/dev/test_io&quot;,O_RDWR);&nbsp;这个好像并不是与&nbsp;在struct&nbsp;file_operation&nbsp;{....}&nbsp;中的open的&nbsp;指定参数类型一致呀,这是咋回事呢??<br /><br />好像是&nbsp;file_operation&nbsp;的read是&nbsp;应用层read()的系统调用?<br />inode&nbsp;和&nbsp;file&nbsp;是在哪里被附值的呢?<br />

rockingliu 发表于 2008-9-22 13:53

补充

谁知道read()系统调用的原形在哪个目录下呢?

chl00100 发表于 2008-9-23 20:20

re

应用层的open和驱动层(内核)的open不是一回事,所以函数参数也不一致,ioctl相同,记得都经过了转换,但驱动层的open返回值的确是返回给了应用层的open<br />想弄明白就看一下驱动代码吧

foxfox 发表于 2008-10-1 11:19

re

应用程的&nbsp;open和read都是库函数,封装了系统调用open,read

sinanjj 发表于 2008-10-1 17:00

没看出哪不一样来.

int&nbsp;(*open)&nbsp;(struct&nbsp;inode&nbsp;*,&nbsp;struct&nbsp;file&nbsp;*);<br />open(&quot;/dev/test_io&quot;,O_RDWR);<br /><br />大写的是宏定义,&nbsp;查头文件(或直接看注释).&nbsp;inode读入的就是字符串,&nbsp;可grep查找源定义.
页: [1]
查看完整版本: 问个关于的设备驱动的弱问题。。。。