a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 115|回复: 0

[综合辅导] Linux认证辅导之Linux中常见文件结构体(1)

[复制链接]
发表于 2012-8-4 12:07:07 | 显示全部楼层 |阅读模式
Linux认证辅导之Linux中常见文件结构体(1): W% Z2 I, f; x! O! L8 n. d
Linux常见文件结构体2 c  B9 B) `/ \, w
1.1 struct file9 v9 \1 O5 N* D
struct file结构体定义在include/linux/fs.h中定义。文件结构体代表一个打开的文件,系统中的每个打开的文件在内核空间都有一个关联的 struct file。它由内核在打开文件时创建,并传递给在文件上进行操作的任何函数。在文件的所有实例都关闭后,内核释放这个数据结构。在内核创建和驱动源码中,struct file的指针通常被命名为file或filp。如下所示:% y4 Q+ y" E7 h! O5 c9 L# @3 b7 V
struct file {
7 E* j4 Z' d$ c- U0 W. v% Wunion {
/ w( ?) v7 r+ J9 Y7 i7 B  }struct list_head fu_list; 文件对象链表指针linux/include/linux/list.h
3 l$ H$ u6 d! J8 ^1 i& pstruct rcu_head fu_rcuhead; RCU(Read-Copy Update)是Linux 2.6内核中新的锁机制* ~9 H9 s+ z& j! N5 a' j8 z  k9 ~
} f_u;
8 j9 `$ a+ e. S0 W9 N9 ?% M& astruct path f_path; 包含dentry和mnt两个成员,用于确定文件路径2 A* ]4 c& d. U8 Q9 O, ]
#define f_dentry f_path.dentry f_path的成员之一,当前文件的dentry结构
& g. {4 X$ X% _- a* P* ]& }#define f_vfsmnt f_path.mnt 表示当前文件所在文件系统的挂载根目录
& w/ d2 f( ~8 o1 a/ T! kconst struct file_operations *f_op; 与该文件相关联的操作函数, Y. Z8 J+ `$ r+ G, E3 j& F! R7 b
atomic_t f_count; 文件的引用计数(有多少进程打开该文件)
! K) t, }+ q% i1 q5 J/ v7 Y0 iunsigned int f_flags; 对应于open时指定的flag& @9 e+ k7 j6 p3 b
mode_t f_mode; 读写模式:open的mod_t mode参数6 y' I3 `. U: t1 Q6 M
off_t f_pos; 该文件在当前进程中的文件偏移量! K; w2 U5 |' b1 _
struct fown_struct f_owner; 该结构的作用是通过信号进行I/O时间通知的数据。! a1 A, f$ q* l) A# W
unsigned int f_uid, f_gid; 文件所有者id,所有者组id
; ?: W' w' H# B$ G) a: {- ostruct file_ra_state f_ra; 在linux/include/linux/fs.h中定义,文件预读相关
* H$ B# e0 p& k- munsigned long f_version;2 F! z$ W6 b* z' z& ]! p0 t
#ifdef CONFIG_SECURITY
( A$ G" E; x0 k* Q8 u5 B4 wvoid *f_security;4 a  `' v6 f" _7 G
#endif
7 @  _9 A# A' ?+ ?) @/ r/* needed for tty driver, and maybe others */) Y' m* Z% |, A" ]) X; ?5 \# R; j
void *private_data;
3 C5 l5 `8 p/ e. @* _; L#ifdef CONFIG_EPOLL9 A6 `. i  _6 O! {- M
/* Used by fs/eventpoll.c to link all the hooks to this file */
( r- @! B7 @: S' d- Hstruct list_head f_ep_links;
" e+ a# M+ |# H* t5 @spinlock_t f_ep_lock;
  ~! ], I5 H6 q* Y2 m. W. O#endif /* #ifdef CONFIG_EPOLL */# `, T7 Y( Z2 a* Q% j  Z( O
struct address_space *f_mapping;
: n0 e* z8 ]  j" O};
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-4 20:48 , Processed in 0.208358 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表