



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精品文档structfile结构体(转)(2011-02-17 19:11:25) 转载标签: 杂谈分类: Linux驱动学习 在 file_operations 结构体中,会看到许多函数指针所指向的函数都必须传进 struct file 结构体指针 struct file * 作为参数。struct file 结构体定义在 中,完整如下:引用struct file union struct list_head fu_list; struct rcu_head fu_rcuhead; f_u; struct path f_path;#define f_dentry f_path.dentry#define f_vfsmnt f_path.mnt const struct file_operations *f_op; spinlock_t f_lock; atomic_long_t f_count; unsigned int f_flags; fmode_t f_mode; loff_t f_pos; struct fown_struct f_owner; const struct cred *f_cred; struct file_ra_state f_ra; u64 f_version;#ifdef CONFIG_SECURITY void *f_security;#endif void *private_data;#ifdef CONFIG_EPOLL struct list_head f_ep_links;#endif struct address_space *f_mapping;#ifdef CONFIG_DEBUG_WRITECOUNT unsigned long f_mnt_write_state;#endif;在设备驱动中,struct file 结构体也是一个非常重要的数据结构。注意的是,这里的 file 和应用程序中的 FILE 流指针没有什么关系,FILE 定义在 C 库中,它永远不会出现在内核代码中。file structure 结构代表一个打开的文件(open file).(打开的文件并没有确切的指定到哪个设备驱动,实际上每个打开的文件都与内核空间中的 struct file 结构相关联)。file structure 结构在调用open 打开一个文件时由内核创建,并会被传递给任一个对这个打开文件进行操作的函数;当所有事情都做完后,会调用 close() 关闭掉文件,此时内核释放这个数据结构。一般地,在内核源码中,struct file 结构体的指针往往写成 filp 。struct file 中的几个重要成员:mode_t f_mode;文件模式根据 FMMODE_READ 和 FMODE_WRITE 位来识别文件是否可读或可写,或是可读可写。在read() 和 write() 系统调用中,没有必要对此权限进行检查,因为内核已经在你的系统调用之前已经做了检查。如果文件没有相应的读或写权限,那么如果尝试读写都将被拒绝,驱动程序甚至对此情况毫无知觉。loff_t f_pos;此变量表示当前的文件读写位置。loff_t 在所有的平台上都是 64 位的变量( long long 型, gcc 专用术语)。驱动程序如果想知道当前在文件中所处位置,那么可以通过读取此变量得知,但是一般地不应直接对此进行更改。通过 llseek() 方法可以改变文件位置。unsigned int f_flags;这是表示如 O_RDONLY, O_NONBLOCK 与 O_SYNC 这样的标志。一个驱动程序应该检查 O_NONBLOCK 标志,以查看是否有非阻塞操作的请求。其它的标志用得比较少。需要注意的是,检查 read/write 权限应该是通过检查 f_mode 得到而不是 f_flags 。所有的标志定义在头文件 linux/fcntl.h 中可以看到。struct file_operations *f_op;内核安排这个指针作为它的 open 实现的一部分,当需要分派什么操作时,会读取它。filp-f_op 因为不会被内核保存起来以在其后之用,所以我们可以改变我们对相关文件的操作,在对文件使用新的操作方法时,我们就会转移到相应调用上。void *private_data;在对驱动调用 open 方法之前,open() 系统调用会这个指针设置为 NULL 。用户可以自由使用这个域,或者对其忽略。可以使用这个域之想分配的数据空间,但必须记得在内核销毁 file structure 之前在 release 方法里释放掉原来分配的内存。private_data 对于系统调用之间信息的保存会显得非常有用。struct dentry *f_dentry;目录入口 (dentry) 结构与文件相关。一般的,除了在以 filp-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 财务会计求职信
- 部编版二年级上册第五单元《坐井观天》教案
- 建筑施工特种作业-建筑起重机械司机(施工升降机)真题库-3
- 山东中考美术题目及答案
- 散装啤酒测评题目及答案
- 2023-2024学年河北省邯郸市高二下学期期末考试数学试题(解析版)
- 新疆康义化学股份有限公司2万吨-年水合肼及配套装置建设项目环评报告
- 佛山教师寝室管理制度
- 作业企业安全管理制度
- 作业现场粉尘管理制度
- JGJT46-2024《施工现场临时用电安全技术标准》条文解读
- 部编版四年级语文下册 期末词语成语专项复习【含答案】
- 2024ESC心房颤动管理指南解读
- 2023年上海浦东新区公办学校教师招聘考试真题
- 电信人工智能大学习抽测考试题库(含答案)
- 中华传统文化融入初中地理大概念单元教学的探究
- 第二单元 公顷和平方千米(讲义)-2024-2025学年四年级上册数学人教版
- 2024-2030年中国扩展现实(XR)行业未来展望与投融资状况分析报告
- 2024年湖北省武汉市中考道德与法治·历史试题(含答案解析)
- 2024年天津市初中学业水平考试语文试卷及参考答案
- 公路水运工程施工企业主要负责人和安全生产管理人员考核大纲和模拟试题库1
评论
0/150
提交评论