linux – 是否有必要在softirq上下文中调用rcu_read_lock

linux – 是否有必要在softirq上下文中调用rcu_read_lock,第1张

概述rcu_read_lock的实现是禁用抢占和屏障.并且softirq上下文不会被抢占. 所以有必要在softirq上下文中调用rcu_read_lock.障碍重要吗? 是的,有必要使用rcu_read_lock来访问受rcu保护的指针,即使在softirq上下文中也是如此. 正如您所指出的,rcu_read_lock和softirqs的一些实现(例如:TINY_RCU)使得即使您没有使用rcu_r rcu_read_lock的实现是禁用抢占和屏障.并且softirq上下文不会被抢占.
所以有必要在softirq上下文中调用rcu_read_lock.障碍重要吗?解决方法 是的,有必要使用rcu_read_lock来访问受rcu保护的指针,即使在softirq上下文中也是如此.

正如您所指出的,rcu_read_lock和softirqs的一些实现(例如:TINY_RCU)使得即使您没有使用rcu_read_lock分隔rcu读取端关键部分也不存在损坏风险.但是,这不是rcu API的保证,只是因为具体实施而“破解”.这个Hack可能会破坏rcu的不同实现(例如:PREEMPT_RCU).

如果您希望将softirqs视为显式rcu读取端关键部分,则必须使用RCU-sched API:
Documentation/RCU/whatisRCU.txt

RCU主要作者撰写的文章的以下部分直接解决了您的问题:
Requirements for RCU part 1: the fundamentals – Disabling preemption does not block grace periods

我想补充一点,如果CONfig_PROVE_RCU = y,在rcu_read_lock之外执行rcu_dereference的代码将触发lockdep警告.

总结

以上是内存溢出为你收集整理的linux – 是否有必要在softirq上下文中调用rcu_read_lock全部内容,希望文章能够帮你解决linux – 是否有必要在softirq上下文中调用rcu_read_lock所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1019685.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存