static inline void rcu_read_lock(void) { __rcu_read_lock(); __acquire(RCU); rcu_lock_acquire(&rcu_lock_map); RCU_LOCKDEP_WARN(!rcu_is_watching(), "rcu_read_lock() used illegally while idle"); } この中でRCUとして意味のあることをやっているのは__rcu_read_lockのみであとはデバッグ用のコードです。 __rcu_read_lockはCONFIG_PREEMPT_RCUが有効か否かで動作が変わります。手元の環境では無効だったので、その前提で読んでいきます。 __rcu_read_lockはpreempt_disableを呼ぶだけです。preempt_disableは名前の通り、コンテキスト切