- 博客(7)
- 资源 (3)
- 收藏
- 关注
原创 linux内核file结构
linux内核中file结构体并不是物理上存在于硬盘上的,而是用于描述进程与文件的关系和操作的。每当进程打开一个文件的时候,linux内核就会建立一个file结构体,而task_struct里的指向file的链表就会添加一个已经打开的文件。文件定义在include/linux/fs.h,定义如下,为了方便观看,直接在代码里以注释格式解析。。struct file { /* * fu_
2016-02-27 10:17:13 1844
原创 linux内核inode结构
inode是linux内核的文件系统里边最重要的数据结构,可以说,一个inode就代表了一个文件,inode结构体保存了文件的大小,创建时间,文件的块大小等各种参数,一个文件可以有多个dentry,因为在linux里由于软连接,硬连接的存在,指向一个文件的路径可能有多个,但是一个文件的inode只能有一个,一般在文件系统里氛围inode区和数据区,而inode区的大小能占到10%左右。inod
2016-02-27 10:16:30 5579
原创 linux内核super_block结构分析
超级块代表了整个文件系统,超级块是文件系统的控制块,有整个文件系统信息,一个文件系统所有的inode都要连接到超级块上,可以说,一个超级块就代表了一个文件系统。super_block定义在include/linux/fs.h里,我们来看一看这个数据结构的定义struct super_block { struct list_head s_list; /* Keep this first
2016-02-27 10:15:35 8051
原创 linux内核dentry结构分析
dentry,即directory entry,目录项,就是多个文件或者目录的链接,通过这个链接可以找寻到目录之下的文件或者是目录项。dentry在文件系统里是极其重要的一个概念,dentry结构体在linux内核里也是用处广泛,这个结构体定义在include/linux/dcache.h里,我们来看一下结构体的定义。struct dentry { atomic_t d_count; un
2016-02-27 10:14:14 11524
原创 linux内核list解析
在linux内核里又有一个非常重要的数据结构,他就是双向循环链表list,定义在linux/list.h,这个数据结构可以说是linux内核中使用最广泛的数据结构了,list的理解对于我们阅读和理解内核有重大的意义,接下来我们一起看一下list.h,看一下这个神奇的数据结构吧。首先看一下这个数据结构的定义struct list_head { struct list_head *next,
2016-02-26 09:11:26 1761
原创 linux内核哈希链表解析
哈希表的介绍 hlistlinux内核里边除了著名的list双向循环链表以外,还有一个重要的数据结构,就是哈希链表。哈希链表也在很多重要的地方有所使用,比如linux内核的dentry,进程查询,文件系统等,可以说,弄明白hlist对于理解linux内核具有重要的意义。数据结构的介绍struct hlist_head { struct hlist_node *first;};
2016-02-26 09:04:55 4420
原创 linux内核container_of宏解析
在看linux内核的源代码的时候,经常会看到一个宏,就是container_of,它的作用是由一个结构体的成员指针得到这个结构体的指针。看的多了,就想搞明白这是怎么个东西,打开source insight一看,这个宏定义在include/linux/kernel.h这个头文件里边,打开一看,定义如下/** * container_of - cast a member of a structu
2016-02-26 09:00:23 1066
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人