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 这两个结构体。
文件结构体代表一个打开的文件(设备对应于设备文件),系统中每个打开的文件在内核空间都有一
个关联的 struct file。它由内核在打开文件时创建,并传递给在文件上进行操作的任何函数。在文件的所有
实例都关闭后,内核释放这个数据结构。在内核和驱动源代码中,struct file 的指针通常被命名为 file 或
filp(即file pointer)。
Linux 管理文件系统的最基本单位,也是文件系统连接任何子目录、文件的桥梁,
主设备号是与驱动对应的概念,同一类设备一般使用相同的主设备号,不同类的设备一般使用不同的
主设备号(但是也不排除在同一主设备号下包含有一定差异的设备)。因为同一驱动可支持多个同类设备,
因此用次设备号来描述使用该驱动的设备的序号,序号一般从0 开始。
内核 Documents 目录下的devices.txt 文件描述了Linux 设备号的分配情况,它由LANANA(The Linux
Assigned Names And Numbers Authority,网址:http://www.lanana.org/)组织维护,Torben Mathiasen 是其中
的主要维护者。需要注意的是,LANANA 给出的设备号标准并不是硬性规定,在具体的设备驱动程序中,
尽管一般会遵循LANANA,但是也可以有例外。
原来是sourceinsight 在添加文件的时候,少包含了文件,一共有2万多个文件需要包含,
而我开始只包含了几百个文件,我说呢,为什么找不到相关的定义。
结构体成员函数,这个结构体包含对文件进行打开、关闭、读写、控制的一系列成员函数。
由于字符设备的上层没有磁盘文件系统,所以字符设备的 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万多个文件需要包含,
而我开始只包含了几百个文件,我说呢,为什么找不到相关的定义。
相关文章推荐
- linux驱动学习--第十天:第五章 Linux 文件系统与设备文件系统(四) 之 设备文件系统 devfs 和 udev
- linux驱动学习--第八天:第五章 Linux 文件系统与设备文件系统(二) 之 Linux 文件系统
- linux驱动学习--第七天:第五章 Linux 文件系统与设备文件系统 之 linux文件操作
- Linux 字符设备驱动结构(三)—— file、inode结构体及chardevs数组等相关知识解析
- Linux 字符设备驱动结构(三)—— file、inode结构体及chardevs数组等相关知识解析
- Linux 字符设备驱动结构(三)—— file、inode结构体及chardevs数组等相关知识解析
- Linux 字符设备驱动结构(三)—— file、inode结构体及chardevs数组等相关知识解析
- linux设备驱动学习--proc文件系统
- Linux 字符设备驱动结构(三)—— file、inode结构体及chardevs数组等相关知识解析
- linux字符设备驱动之file_operations结构体知识详解
- Linux设备文件三大结构:inode,file,file_operations
- Linux 设备驱动模型,I2C驱动,sys文件系统(1)
- 字符驱动设备中几个重要的结构体(cdev,file_operations,inode,file)
- 《Linux4.0设备驱动开发详解》笔记--第五章:Linux文件系统与设备文件
- Linux设备驱动开发详解-Note(11)--- Linux 文件系统与设备文件系统(3)
- Linux 文件系统(一)---虚拟文件系统VFS----超级块、inode、dentry、file
- IBM UNIX & LINUX -AIX 5L 系统管理技术 学习笔记1 -网络文件系统 NFS network file system
- 关于设备栈,IO栈,IO_STACK_LOCATION----文件系统过滤驱动学习收获
- Linux字符设备中的两个重要结构体(file、inode)