当前位置: 技术问答>linux和unix
关于linux内核文件系统的一个问题, 向各位讨教
来源: 互联网 发布时间:2015-03-17
本文导语: 最近看了看linux2.4.0的源代码, 关于文件系统的, 其中有个问题向各位讨教: 在关于内核中打开文件的信息是通过struct file 进行描述, 而内核中对“未使用”的文件对象是用一个全局的free_list队列进行管...
最近看了看linux2.4.0的源代码, 关于文件系统的, 其中有个问题向各位讨教:
在关于内核中打开文件的信息是通过struct file 进行描述, 而内核中对“未使用”的文件对象是用一个全局的free_list队列进行管理的, 相关代码在fs/file_table.c中, 如下:/* And here the free ones sit */
static LIST_HEAD(free_list);
而内核中对缓冲区buffer的管理是通过结构buffer_head进行管理, 而内核对buffer_head的管理中有也有一个全局bh_free_head结构的free_list数组, 在fs/buffer.c中, 定义如下:
struct bh_free_head {
struct buffer_head *list;
spinlock_t lock;
};
static struct bh_free_head free_list[NR_SIZES];
提问: 为什么两个全局变量用同一个变量名呢???这对标准c语言应该是语法错误呀。而且两个结构都是对VFS系统的(buffer_head也可用于具体的文件系统?), 就是模块编译也不对吧??小弟实在不明白???, 向各位请教???
还有, 可否能告诉我gcc对标准c的扩展的文档???, 在哪里可以下载???
不胜感谢!!!!!!!!!
在关于内核中打开文件的信息是通过struct file 进行描述, 而内核中对“未使用”的文件对象是用一个全局的free_list队列进行管理的, 相关代码在fs/file_table.c中, 如下:/* And here the free ones sit */
static LIST_HEAD(free_list);
而内核中对缓冲区buffer的管理是通过结构buffer_head进行管理, 而内核对buffer_head的管理中有也有一个全局bh_free_head结构的free_list数组, 在fs/buffer.c中, 定义如下:
struct bh_free_head {
struct buffer_head *list;
spinlock_t lock;
};
static struct bh_free_head free_list[NR_SIZES];
提问: 为什么两个全局变量用同一个变量名呢???这对标准c语言应该是语法错误呀。而且两个结构都是对VFS系统的(buffer_head也可用于具体的文件系统?), 就是模块编译也不对吧??小弟实在不明白???, 向各位请教???
还有, 可否能告诉我gcc对标准c的扩展的文档???, 在哪里可以下载???
不胜感谢!!!!!!!!!
|
hehe,static表示所在文件可见,外部不可见。
还是好好温习一下C语言吧。
还是好好温习一下C语言吧。