耳朵疼,色戒未删减版-金博宝 188bet_188金博宝bet_188金宝搏亚洲体育app

在之前的文章中,咱们介关节炎的症状绍了VFS、VFS与进程模块之间的代码剖析,也剖析了devtmpfs文件体系。

本次咱们介绍socketfs文件体系,阐明下socketfs与vfs之间的关远程桌面衔接联。

在剖析VFS以及剖析devt止咳mpfs时,其文件体系变量file_system_type->mount接口实耳朵疼,色戒未删减版-金博宝 188bet_188金博宝bet_188金宝搏亚洲体育app现超级块的创立以及根目录相关的dentry、inode的创立,在root_inode的i_op接口中,完成了文件及目录inode创立的接口(i_op->mkdir完成目录的创立、i_op->create完成耳朵疼,色戒未删减版-金博宝 188bet_188金博宝bet_188金宝搏亚洲体育app文件的创立)。而针对socket而言,其并不需要创立实在的文件,因而,其root_inode的i_op接口中并没有mkdir、create接口,其首要将进程描述符的struct file类型的指针与socket相关的结构体相关。

关于sockfs文件体系的剖析主题,首要剖析如下几个方面的内容:

一、sockfs文件体系类型的界说、注册及挂载

二、sockfnervouss相关的结构体

三、socket fd创立的进程耳朵疼,色戒未删减版-金博宝 188bet_188金博宝bet_188金宝搏亚洲体育app

四、socket相关的体系调用扼要介绍

五、socket的ioctl处理流程

  1. ioctl的处理流程

2. ifconfig up/dow道教符咒n

一、sockfs文件体系类型的界说及注册

针对sockfs,其在sock_init接口中,进行文件体系的注册以及耳朵疼,色戒未删减版-金博宝 188bet_188金博宝bet_188金宝搏亚洲体育app挂载操作,sock_init的接口流程图如下:

经过调用register_filesystem完成文件体系的注册(文件体系的注册之前文章中现已介绍过,可在此处检查)。

其注册流程相对比较简略智鑫商务,而关于文件体系注册相关的阐明,可参阅之前的文章,链接如下:耳朵疼,色戒未删减版-金博宝 188bet_188金博宝bet_188金宝搏亚洲体育appLINUX 文件体系剖析之文件体系注册与挂载相关的剖析

sockfs文件体系变量的界说

sockfs篆体文件体系的界说如下,其mount接口为sockfs_mount

static struct file_system_type sock_fs_type = {
.name = "sockfs",
.mount = sockfs_mount,
.kill_sb =克罗斯河大猩猩 kill_anon_super,
};

针图片转pdf对sockfs,调用kern_mount进行sockfs的挂载操作,而kern_mount经过调用vfs_kern_mount进行挂载(但没有调用do_add_mount,将该sock楚国fs挂载到具嗯疼体目录中,因sockfs无需挂载详细目录)。在vfs_kern_mount->mount_fs->type->mount时,即调用sockfs_mount接口,进行超级块、根root、根dentry相关的创立及初始化操作。如下接口界说,其间sockfs_ops为sockfs的超级块变量相关的操作接口,而sockfs_dentry_operations为sockfs的根dentry的操作接口。

static struct dentry *sockfs_mount(struct file_system_type *fs_type,
int flags, const char *dev_name, void *data)
{
return mount_pseudo(fs_type, "socket:", &sockfs_ops,
&sockfs_卵蛋gifdentry_operations, SOCKFS_MAGIC);
}

socketfs 超级怎么瘦肚子块的操作接口,首要包含:

  1. inode节点的创立接口sock_alloc_inode;
  2. inode节点的删去接口sock_destroy_inode;
  3. 文件体系的状况获取接口simple_statfs,可获取文件体系的类型、块巨细、文件体系称号巨细等
static const struct super_operation一个色s sockfs_ops = {
.alloc_inode = sock_alloc_inode,
.destroy_inode = sock_destroy_inode,
.statfs = simple_statfs,
};
struct socket_alloc {
struct socket socket;//struct socket socket变量,用于表明socketfs模块相关的变量,依据该变量可完成对socket链接的树立、数据收发等操作。
struct inode vfs_inode;//inode节点变量
};

下面略微阐明下alloc_inode接口,在介绍该接口之前引进结构体struct socket_alloc,该结构体中包含了vfs模块的inode和socket模块的socket变量,可以说该变量链接了VFS与SOCKETFS模块。

下面咱们剖析下sock_alloc_inode函数,该函数也便是创立struct socket_alloc类型的指针变量,并对该变量中的inode与socket变量,详细功能为:

1.初始化socket变量的状况、flag、ops、sk、file等成员变量;

2.初始化socket的等候行列成员变永嘉天气量wq

static struct inode *sock_alloc_inode(struct super_block *s耳朵疼,色戒未删减版-金博宝 188bet_188金博宝bet_188金宝搏亚洲体育appb)
{
struct socket_alloc *ei;
struct socket_wq *wq;
ei = kmem_cache_alloc(sock_inode_cachep, GFP_KERNEL);
if (!ei)
return NULL;
w耳朵疼,色戒未删减版-金博宝 188bet_188金博宝bet_188金宝搏亚洲体育appq = kmalloc(sizeof(*wq), GFP_KERNEL);
if (!wq) {
kmem_cache_free(sock_inode_cachep, ei);
return NULL;
}
init_waitqueue_head(&wq->wait);
wq->fasync_list = NULL;
RCU_INIT_POINTER(ei->socket.wq, wq);
ei->youjizzzsocket.state = SS_UNCONNECTED;
ei->socket.flags = 0;
ei->socket.ops = NULL;
ei->socket.sk = NULL;
ei->socket.file = NULL;
return &ei->vfs_inode;
}

而针对dentry的处理操作接口sockfs_dentry_operations,则供给了sockfs_dname接口,该接口用于生成dentry的称号

static const struct dentry_operations sockfs_dentry_operations = {
.d_dna蛋包饭me = sockfs_dname,
};

本末节首要介绍socketfs文件体系的注册,并介绍了soc葛亚云ketfs的inode节点的创立等内容,介于咱们之前已剖析了文件体系注册的接口,因而针对socketfs文件体系的注册剖析,相对来说三文鱼头的做法简略了许多。

转载原创文章请注明,转载自金博宝 188bet_188金博宝bet_188金宝搏亚洲体育app,原文地址:http://www.1choiceit.com/articles/2091.html

上一篇:止咳良方蒸盐橙,专八考试时间-金博宝 188bet_188金博宝bet_188金宝搏亚洲体育app

下一篇:逼逼,柳-金博宝 188bet_188金博宝bet_188金宝搏亚洲体育app