您的位置:首页 > 运维架构 > Linux

linux驱动学习--第九天:第五章 Linux 文件系统与设备文件系统(三) 之 file 结构体 和 inode 结构体

2013-06-13 00:05 1016 查看
应用程序和 VFS 之间的接口是系统调用,而VFS 与磁盘文件系统以及普通设备之间的接口是file_operations

结构体成员函数,这个结构体包含对文件进行打开、关闭、读写、控制的一系列成员函数。

由于字符设备的上层没有磁盘文件系统,所以字符设备的 file_operations 成员函数就直接由设备驱动

提供了,file_operations 正是字符设备驱动的核心。

而对于块存储设备而言,ext2、fat、jffs2 等文件系统中会实现针对VFS 的file_operations 成员函数,

设备驱动层将看不到file_operations 的存在。磁盘文件系统和设备驱动会将对磁盘上文件的访问最终转换

成对磁盘上柱面和扇区的访问。

在设备驱动程序的设计中,一般而言,会关心结构体 file 和inode 这两个结构体。



1.file 结构体

文件结构体代表一个打开的文件(设备对应于设备文件),系统中每个打开的文件在内核空间都有一

个关联的 struct file。它由内核在打开文件时创建,并传递给在文件上进行操作的任何函数。在文件的所有

实例都关闭后,内核释放这个数据结构。在内核和驱动源代码中,struct file 的指针通常被命名为 file 或

filp(即file pointer)。

2.inode 结构体

VFS inode 包含文件访问权限、属主、组、大小、生成时间、访问时间、最后修改时间等信息。它是

Linux 管理文件系统的最基本单位,也是文件系统连接任何子目录、文件的桥梁,

主设备号是与驱动对应的概念,同一类设备一般使用相同的主设备号,不同类的设备一般使用不同的

主设备号(但是也不排除在同一主设备号下包含有一定差异的设备)。因为同一驱动可支持多个同类设备,

因此用次设备号来描述使用该驱动的设备的序号,序号一般从0 开始。

内核 Documents 目录下的devices.txt 文件描述了Linux 设备号的分配情况,它由LANANA(The Linux

Assigned Names And Numbers Authority,网址:http://www.lanana.org/)组织维护,Torben Mathiasen 是其中

的主要维护者。需要注意的是,LANANA 给出的设备号标准并不是硬性规定,在具体的设备驱动程序中,

尽管一般会遵循LANANA,但是也可以有例外。

小结:

下载了几个版本,都找不到strcut file 结构体的定义。

原来是sourceinsight 在添加文件的时候,少包含了文件,一共有2万多个文件需要包含,

而我开始只包含了几百个文件,我说呢,为什么找不到相关的定义。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐