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

应用程序和 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万多个文件需要包含,

而我开始只包含了几百个文件,我说呢,为什么找不到相关的定义。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值