···6969 Explicit disabling of preemption (preempt_disable(), for example)7070 can serve as rcu_read_lock_sched(), but is less readable and7171 prevents lockdep from detecting locking issues. Acquiring a7272- spinlock also enters an RCU read-side critical section.7272+ raw spinlock also enters an RCU read-side critical section.7373+7474+ The guard(rcu)() and scoped_guard(rcu) primitives designate7575+ the remainder of the current scope or the next statement,7676+ respectively, as the RCU read-side critical section. Use of7777+ these guards can be less error-prone than rcu_read_lock(),7878+ rcu_read_unlock(), and friends.73797480 Please note that you *cannot* rely on code known to be built7581 only in non-preemptible kernels. Such code can and will break,···41140513. Unlike most flavors of RCU, it *is* permissible to block in an412406 SRCU read-side critical section (demarked by srcu_read_lock()413407 and srcu_read_unlock()), hence the "SRCU": "sleepable RCU".414414- Please note that if you don't need to sleep in read-side critical415415- sections, you should be using RCU rather than SRCU, because RCU416416- is almost always faster and easier to use than is SRCU.408408+ As with RCU, guard(srcu)() and scoped_guard(srcu) forms are409409+ available, and often provide greater ease of use. Please note410410+ that if you don't need to sleep in read-side critical sections,411411+ you should be using RCU rather than SRCU, because RCU is almost412412+ always faster and easier to use than is SRCU.417413418414 Also unlike other forms of RCU, explicit initialization and419415 cleanup is required either at build time via DEFINE_SRCU()···451443 real-time workloads than is synchronize_rcu_expedited().452444453445 It is also permissible to sleep in RCU Tasks Trace read-side454454- critical section, which are delimited by rcu_read_lock_trace() and455455- rcu_read_unlock_trace(). However, this is a specialized flavor456456- of RCU, and you should not use it without first checking with457457- its current users. In most cases, you should instead use SRCU.446446+ critical section, which are delimited by rcu_read_lock_trace()447447+ and rcu_read_unlock_trace(). However, this is a specialized448448+ flavor of RCU, and you should not use it without first checking449449+ with its current users. In most cases, you should instead450450+ use SRCU. As with RCU and SRCU, guard(rcu_tasks_trace)() and451451+ scoped_guard(rcu_tasks_trace) are available, and often provide452452+ greater ease of use.458453459454 Note that rcu_assign_pointer() relates to SRCU just as it does to460455 other forms of RCU, but instead of rcu_dereference() you should