Linux Kernel Generic Netlink – 它是并发的吗?
发布时间:2020-12-14 02:14:20 所属栏目:Linux 来源:网络整理
导读:假设我使用带有多个回调的genl_register_family_with_ops注册了一个通用的netlink接口. 我没有看到任何关于它的警告,我认为回调是连续调用的,但没有关于如何调用回调的信息. 是否有可能在我注册的同一个通用netlink接口上同时调用多个回调?我是否需要回调之
假设我使用带有多个回调的genl_register_family_with_ops注册了一个通用的netlink接口.
我没有看到任何关于它的警告,我认为回调是连续调用的,但没有关于如何调用回调的信息. 是否有可能在我注册的同一个通用netlink接口上同时调用多个回调?我是否需要回调之间的任何同步? 为了使问题更简单: 可以在两个内核中抢占或同时运行单个netlink回调吗? 解决方法
答案假设
Linux内核版本3.11或4.2,可能对许多其他人有效.回答截至2015年9月的当前情况.
回调是否可以并发是注册时 收到Netlink消息后,最终调用函数 static int genl_rcv_msg(struct sk_buff *skb,struct nlmsghdr *nlh) { struct genl_family *family; int err; family = genl_family_find_byid(nlh->nlmsg_type); if (family == NULL) return -ENOENT; if (!family->parallel_ops) genl_lock(); err = genl_family_rcv_msg(family,skb,nlh); if (!family->parallel_ops) genl_unlock(); return err; } 一旦调用了 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |