Sockets sock_net()做什么?
我通过阅读一个内核模块来研究用户空间和内核之间的通信,但是在代码中有一个对函数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); }
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
}