d_release:当要释放一个目录项对象时(放入slab分配器),调用该方法。
d_iput:当一个目录项对象变为“负”状态时调用该方法。缺省的VFS函数调用iput()释放索引节点对象。
d_dname:当需要产生一个dentry的路径名的时候调用。对于某些想要延迟路径名的产生的伪文件系统(sockfs, pipefs, ...)很有用。(不是在dentry创建的时候,而是在需要路径名的时候才产生)。真实的文件系统可能不会使用它,因为它们的dentries出现在全局的dcache哈希表中,它们的哈希应该是不变量。除非使用适当的SMP安全措施,否则由于没有持有锁,则d_dname()不应该试着自己去修改dentry。注意:d_path()逻辑是相当复杂的。正确的返回,比如"Hello"的方法是将其放在缓冲区的结尾处,然后返回指向第一个字符的指针。dynamic_dname()辅助函数可被用来处理这一点。
2.6文件对象
文件对象描述进程怎样与一个打开的文件进行交互。文件对象是在文件被打开的时候创建的,由一个file结构来描述,文件结构也仅仅存在于内存中。其定义如下:
---------------------------------------------------------------------
include/linux/fs.h
struct file {
/*
* fu_list becomes invalid after file_free is called and queued via
* fu_rcuhead for RCU freeing
*/
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; /* f_ep_links, f_flags, no IRQ */
atomic_long_t f_count; /* 文件对象的引用计数 */
unsigned int f_flags; /* 打开文件时所制定的标志 */
fmode_t f_mode; /* 进程的访问模式 */
loff_t f_pos; /* 文件指针 */
struct fown_struct f_owner; /* 通过信号进行I/O时间通知的数据 */
const struct cred *f_cred; /* 进程环境相关信息 */
struct file_ra_state f_ra; /* 文件预读状态 */
u64 f_version; /* 版本号,每次使用后自动递增 */
#ifdef CONFIG_SECURITY
void *f_security;
#endif
/* needed for tty driver, and maybe others */
void *private_data;
#ifdef CONFIG_EPOLL
/* Used by fs/eventpoll.c to link all the hooks to this file */
struct list_head f_ep_links;
#endif /* #ifdef CONFIG_EPOLL */
struct address_space *f_mapping; /* 指向文件地址空间对象的指针 */
#ifdef CONFIG_DEBUG_WRITECOUNT
unsigned long f_mnt_write_state;
#endif
};
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-76619-8.html
1手机信号wifi严重不稳定以前能用的应用全装不上战游戏画面严重卡顿早知道不升级后悔死了
清者自清
改是用国货自豪的时候了