- 论坛徽章:
- 17
|
3.11.5内核,没发现你说的 kernel_receive()
内核 netlink套接字接收用户空间的接收函数,即 netlink_socket.netlink_rcv
它在调用 netlink_kernel_create()时,设置为第三个参数 struct netlink_kernel_cfg中的 input域
这个函数运行于进程上下文,详细调用链为 (假设你在用户空间调用 sendmsg)- <net/socket.c>
- SYSCALL_DEFINE3(sendmsg, int, fd, struct msghdr __user *, msg, unsigned int, flags)
- __sys_sendmsg()
- ___sys_sendmsg()
- sock_sendmsg()
- __sock_sendmsg()
- __sock_sendmsg_nosec()
- sock->ops->sendmsg()
复制代码 由于你使用的套接字为 netlink, sock->ops->sendmsg()实际调用的是- <net/netlink/af_netlink.c>
- netlink_sendmsg()
- netlink_unicast()
- netlink_unicast_kernel()
- netlink_sock->netlink_rcv()
复制代码 |
|