Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 877 static inline void rcu_read_lock(void)
- 878 {
- 879 __rcu_read_lock();
- 880 __acquire(RCU);
- 881 rcu_lock_acquire(&rcu_lock_map);
- 882 rcu_lockdep_assert(rcu_is_watching(),
- 883 "rcu_read_lock() used illegally while idle");
- 884 }
- 2949 void synchronize_sched(void)
- 2950 {
- 2951 rcu_lockdep_assert(!lock_is_held(&rcu_bh_lock_map) &&
- 2952 !lock_is_held(&rcu_lock_map) &&
- 2953 !lock_is_held(&rcu_sched_lock_map),
- 2954 "Illegal synchronize_sched() in RCU-sched read-side critical section");
- 2955 if (rcu_blocking_is_gp())
- 2956 return;
- 2957 if (rcu_expedited)
- 2958 synchronize_sched_expedited();
- 2959 else
- 2960 wait_rcu_gp(call_rcu_sched);
- 2961 }
- 2962 EXPORT_SYMBOL_GPL(synchronize_sched);
- 219 void wait_rcu_gp(call_rcu_func_t crf)
- 220 {
- 221 struct rcu_synchronize rcu;
- 222
- 223 init_rcu_head_on_stack(&rcu.head);
- 224 init_completion(&rcu.completion);
- 225 /* Will wake me after RCU finished. */
- 226 crf(&rcu.head, wakeme_after_rcu);
- 227 /* Wait for it. */
- 228 wait_for_completion(&rcu.completion);
- 229 destroy_rcu_head_on_stack(&rcu.head);
- 230 }
- 2856 /*
- 2857 * Queue an RCU-sched callback for invocation after a grace period.
- 2858 */
- 2859 void call_rcu_sched(struct rcu_head *head, void (*func)(struct rcu_head *rcu))
- 2860 { // func is wakeme_after_rcu
- 2861 __call_rcu(head, func, &rcu_sched_state, -1, 0);
- 2862 }
- 2863 EXPORT_SYMBOL_GPL(call_rcu_sched);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement