rcu_read_lock的实现是禁用抢占和屏障。并且softirq上下文将不会被抢占。因此有必要在softirq上下文中调用rcu_read_lock。障碍重要吗?
rcu_read_lock 是为了保护某些内核资源同时被修改而导致竞争条件错误。
资源必须防止的是:被两个软件任务/上下文同时使用和修改。
在 Linux 中,同时修改可能发生在:
在单核CPU环境下的事件,1)和2)仍然可能发生。在修改关键资源的任务中,软件 IRQ 引发,进入软件 IRQ 上下文,运行 IRQ 处理程序并同时修改相同的资源。