所以有必要在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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)