Chinaunix首页 | 论坛 | 博客
  • 博客访问: 79742
  • 博文数量: 14
  • 博客积分: 132
  • 博客等级: 入伍新兵
  • 技术积分: 90
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-25 20:46
文章分类
文章存档

2012年(14)

我的朋友

分类: LINUX

2012-05-28 16:25:23

2.6内核中已经把很多初始化函数都放在initcall中实现了。所以初始化中会执行socket.c中的sock_init()函数

static int __init sock_init(void)
{
。。。。。。
register_filesystem(&sock_fs_type);/* wumingxiaozu */
sock_mnt = kern_mount(&sock_fs_type);
。。。。。。
}

就是在sock_init()函数中成功的将我们的网络文件系统登记、安装到了linux的内核中,register_filesystem函数将我们的sockfs套接字文件系统注册到linux内核中去,kern_mount函数完成了在linux内核中的套接字文件系统的安装,在内核中建立了网络文件系统安装点。这二个函数均与具体的使用的文件系统相关,所以我们不再跟进分析了,朋友们参阅操作系统理论的文件系统内容可以了解一下。在安装的过程中,我们的套接字文件系统会调用sock_fs_type数据结构中的get_sb钩子函数,以后我们称这类初始化的结构变量为钩子结构,因为他提供了我们函数的入口,就象钩子一样,将函数挂入到结构体中,所以这样的结构体我们称之为钩子结构体,而挂入的函数称之为钩子函数。我们在上面的代码中已经看到了sock_fs_type的设置了get_sb的钩子函数为sockfs_get_sb(),所以理所当然进入函数中去完成文件系统的安装过程

 

 

阅读(4065) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~