如何知道sock-> ops在内核中分配的位置?

时间:2014-10-14 01:32:42

标签: linux linux-kernel

在内核linux/net/socket.c

的代码中

sock->ops->bind()

我无法找到UDP程序中socksock->ops的分配位置。

谢谢!

1 个答案:

答案 0 :(得分:2)

这不是按照您的预期直接完成的。如果仔细查看代码,您会发现函数sock_from_file(struct file *file, int *err)用于将file->f_op分配给socket_file_ops

在代码中调用两次

  1. sockfd_lookup(int fd, int *err)函数sock = sock_from_file(file, err);

  2. sockfd_lookup_light(int fd, int *err, int *fput_needed)函数sock = sock_from_file(f.file, err);

  3. 然后将file分配给sock->file函数中的sock_alloc_file(struct socket *sock, int flags, const char *dname)