一定要让你明白什么是 Netlink

本文深入探讨了内核和用户空间Netlink套接字的创建过程,详细解析了从__netlink_create到SyS_socket的调用流程,以及netlink_ops结构中关键函数的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

内核netlink 套接字 和 用户空间netlink套接字都会调用下面的这个函数 来创建一个sock
在这里插入图片描述

/*
	调用流程:
	 0xffffff80089c7790 : __netlink_create+0x0/0xe4 [kernel]
	 0xffffff80089c7d70 : netlink_create+0x1ec/0x26c [kernel]
	 0xffffff8008989d50 : __sock_create+0x11c/0x180 [kernel]
	 0xffffff8008989e00 : sock_create+0x4c/0x5c [kernel]
	 0xffffff800898ad6c : SyS_socket+0x48/0xd0 [kernel]
	 0xffffff8008082f30 : el0_svc_naked+0x24/0x28 [kernel]
	 0x0 (inexact)
*/
static int __netlink_create(struct net *net, 
									struct socket *sock,
			    					struct mutex *cb_mutex, 
			    					int protocol,
			    					int kern)
{
	....
	/*
		用户空间调用 bind() connect() .....
		会在这里进行响应:
		
		static const struct proto_ops netlink_ops = {
		.family =	PF_NETLINK,
		.owner =	THIS_MODULE,
		.release =	netlink_release,
		.bind =		netlink_bind,
		...
		.shutdown =	sock_no_shutdown,
		.setsockopt =	netlink_setsockopt,
	};
	*/
	sock->ops = &netlink_ops;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值