Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets sock_net()做什么?_Sockets_Kernel - Fatal编程技术网

Sockets sock_net()做什么?

Sockets sock_net()做什么?,sockets,kernel,Sockets,Kernel,我通过阅读一个内核模块来研究用户空间和内核之间的通信,但是在代码中有一个对函数sock_net()的调用,我不理解。我搜索了很多,但没有找到关于这个特定函数的任何文档,那么这个函数实际上做什么呢?如果启用了网络名称空间(容器通常有自己的网络),它将返回套接字所属的网络堆栈对象 见: 在哪里: static inline struct net *sock_net(const struct sock *sk) { return read_pnet(&sk->sk_net); }

我通过阅读一个内核模块来研究用户空间和内核之间的通信,但是在代码中有一个对函数sock_net()的调用,我不理解。我搜索了很多,但没有找到关于这个特定函数的任何文档,那么这个函数实际上做什么呢?

如果启用了网络名称空间(容器通常有自己的网络),它将返回套接字所属的网络堆栈对象

见:

在哪里:

static inline
struct net *sock_net(const struct sock *sk)
{
    return read_pnet(&sk->sk_net);
}
static inline struct net *read_pnet(const possible_net_t *pnet)
{
#ifdef CONFIG_NET_NS
    return pnet->net;
#else
    return &init_net;
#endif
}