首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 驱动开发 >

关于open函数,该怎么处理

2012-07-29 
关于open函数open函数 在用户态中是:int open( const char * pathname,int flags)在内核中是这个形式:int

关于open函数
open函数 在用户态中是:int open( const char * pathname,int flags); 
  在内核中是这个形式:int open(struct inode *inode,struct file *file)  
 


例如:我在应用程序打开驱动程序文件:testdev = open ("/dev/test",O_RDWR);  
这个时候open函数应该是指的用户态的吧?

那驱动程序中又有如下设置:
struct file_operations test_fops = {  
  .owner=THIS_MODULE,  
  .read=read_test,  
  .write=write_test,  
  .open=open_test,  
  .ioctl=ioctl_test,  
  .release=release_test,  
};  
那这内核态中的open函数到底什么时候用啊???

[解决办法]

探讨
那这内核态中的open函数到底什么时候用啊?

[解决办法]
用户空间的open函数,经过系统调用,打开/dev下的文件,获得主设备号,找到在/proc下面注册的设备驱动,然后经过设备结构体找到驱动函数中的open函数。不过系统调用那一部分还包含了好多步骤,说不太清楚,包括打开设备文件时内核还创建了struct file结构体存储一些信息,在后面的read等函数中调用的file文件就是在这儿建立的

热点排行