在之前的文章中,我们介绍了VFS、VFS与进程模块之间的代码分析,也分析了devtmpfs文件系统。
本次我们介绍socketfs文件系统,说明下socketfs与vfs之间的关联。
在分析VFS以及分析devtmpfs时,其文件系统变量file_system_type->mount接口实现超级块的创建以及根目录相关的dentry、inode的创建,在root_inode的i_op接口中,实现了文件及目录inode创建的接口(i_op->mkdir实现目录的创建、i_op->create实现文件的创建)。而针对socket而言,其并不需要创建真实的文件,因此,其root_inode的i_op接口中并没有mkdir、create接口,其主要将进程描述符的struct file类型的指针与socket相关的结构体关联。
关于sockfs文件系统的分析主题,主要分析如下几个方面的内容:
一、sockfs文件系统类型的定义、注册及挂载
二、sockfs相关的结构体
三、socket fd创建的过程
四、socket相关的系统调用简要介绍
五、socket的ioctl处理流程
- ioctl的处理流程
2. ifconfig up/down
一、sockfs文件系统类型的定义及注册
针对sockfs,其在sock_init接口中,进行文件系统的注册以及挂载操作,sock_init的接口流程图如下:
通过调用register_filesystem实现文件系统的注册(文件系统的注册之前文章中已经介绍过,可在此处查看)。
其注册流程相对比较简单,而关于文件系统注册相关的说明,可参考之前的文章,链接如下:LINUX 文件系统分析之文件系统注册与挂载相关的分析
sockfs文件系统变量的定义
sockfs文件系统的定义如下,其mount接口为sockfs_mount
static struct file_system_type sock_fs_type = {.name = "sockfs