Advertisement
Guest User

Untitled

a guest
May 25th, 2015
238
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.59 KB | None | 0 0
  1. 877 static inline void rcu_read_lock(void)
  2. 878 {
  3. 879 __rcu_read_lock();
  4. 880 __acquire(RCU);
  5. 881 rcu_lock_acquire(&rcu_lock_map);
  6. 882 rcu_lockdep_assert(rcu_is_watching(),
  7. 883 "rcu_read_lock() used illegally while idle");
  8. 884 }
  9.  
  10. 2949 void synchronize_sched(void)
  11. 2950 {
  12. 2951 rcu_lockdep_assert(!lock_is_held(&rcu_bh_lock_map) &&
  13. 2952 !lock_is_held(&rcu_lock_map) &&
  14. 2953 !lock_is_held(&rcu_sched_lock_map),
  15. 2954 "Illegal synchronize_sched() in RCU-sched read-side critical section");
  16. 2955 if (rcu_blocking_is_gp())
  17. 2956 return;
  18. 2957 if (rcu_expedited)
  19. 2958 synchronize_sched_expedited();
  20. 2959 else
  21. 2960 wait_rcu_gp(call_rcu_sched);
  22. 2961 }
  23. 2962 EXPORT_SYMBOL_GPL(synchronize_sched);
  24.  
  25.  
  26. 219 void wait_rcu_gp(call_rcu_func_t crf)
  27. 220 {
  28. 221 struct rcu_synchronize rcu;
  29. 222
  30. 223 init_rcu_head_on_stack(&rcu.head);
  31. 224 init_completion(&rcu.completion);
  32. 225 /* Will wake me after RCU finished. */
  33. 226 crf(&rcu.head, wakeme_after_rcu);
  34. 227 /* Wait for it. */
  35. 228 wait_for_completion(&rcu.completion);
  36. 229 destroy_rcu_head_on_stack(&rcu.head);
  37. 230 }
  38.  
  39. 2856 /*
  40. 2857 * Queue an RCU-sched callback for invocation after a grace period.
  41. 2858 */
  42. 2859 void call_rcu_sched(struct rcu_head *head, void (*func)(struct rcu_head *rcu))
  43. 2860 { // func is wakeme_after_rcu
  44. 2861 __call_rcu(head, func, &rcu_sched_state, -1, 0);
  45. 2862 }
  46. 2863 EXPORT_SYMBOL_GPL(call_rcu_sched);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement