在内核linux/net/socket.c
sock->ops->bind()
我无法找到UDP程序中sock
或sock->ops
的分配位置。
谢谢!
答案 0 :(得分:2)
这不是按照您的预期直接完成的。如果仔细查看代码,您会发现函数sock_from_file(struct file *file, int *err)
用于将file->f_op
分配给socket_file_ops
在代码中调用两次
在sockfd_lookup(int fd, int *err)
函数sock = sock_from_file(file, err);
在sockfd_lookup_light(int fd, int *err, int *fput_needed)
函数sock = sock_from_file(f.file, err);
然后将file
分配给sock->file
函数中的sock_alloc_file(struct socket *sock, int flags, const char *dname)
。