|
@@ -237,21 +237,53 @@ static inline int rcu_is_cpu_idle(void)
|
|
|
}
|
|
|
#endif /* else !CONFIG_PROVE_RCU */
|
|
|
|
|
|
+static inline void rcu_lock_acquire(struct lockdep_map *map)
|
|
|
+{
|
|
|
+ WARN_ON_ONCE(rcu_is_cpu_idle());
|
|
|
+ lock_acquire(map, 0, 0, 2, 1, NULL, _THIS_IP_);
|
|
|
+}
|
|
|
+
|
|
|
+static inline void rcu_lock_release(struct lockdep_map *map)
|
|
|
+{
|
|
|
+ WARN_ON_ONCE(rcu_is_cpu_idle());
|
|
|
+ lock_release(map, 1, _THIS_IP_);
|
|
|
+}
|
|
|
+
|
|
|
extern struct lockdep_map rcu_lock_map;
|
|
|
-# define rcu_read_acquire() \
|
|
|
- lock_acquire(&rcu_lock_map, 0, 0, 2, 1, NULL, _THIS_IP_)
|
|
|
-# define rcu_read_release() lock_release(&rcu_lock_map, 1, _THIS_IP_)
|
|
|
+
|
|
|
+static inline void rcu_read_acquire(void)
|
|
|
+{
|
|
|
+ rcu_lock_acquire(&rcu_lock_map);
|
|
|
+}
|
|
|
+
|
|
|
+static inline void rcu_read_release(void)
|
|
|
+{
|
|
|
+ rcu_lock_release(&rcu_lock_map);
|
|
|
+}
|
|
|
|
|
|
extern struct lockdep_map rcu_bh_lock_map;
|
|
|
-# define rcu_read_acquire_bh() \
|
|
|
- lock_acquire(&rcu_bh_lock_map, 0, 0, 2, 1, NULL, _THIS_IP_)
|
|
|
-# define rcu_read_release_bh() lock_release(&rcu_bh_lock_map, 1, _THIS_IP_)
|
|
|
+
|
|
|
+static inline void rcu_read_acquire_bh(void)
|
|
|
+{
|
|
|
+ rcu_lock_acquire(&rcu_bh_lock_map);
|
|
|
+}
|
|
|
+
|
|
|
+static inline void rcu_read_release_bh(void)
|
|
|
+{
|
|
|
+ rcu_lock_release(&rcu_bh_lock_map);
|
|
|
+}
|
|
|
|
|
|
extern struct lockdep_map rcu_sched_lock_map;
|
|
|
-# define rcu_read_acquire_sched() \
|
|
|
- lock_acquire(&rcu_sched_lock_map, 0, 0, 2, 1, NULL, _THIS_IP_)
|
|
|
-# define rcu_read_release_sched() \
|
|
|
- lock_release(&rcu_sched_lock_map, 1, _THIS_IP_)
|
|
|
+
|
|
|
+static inline void rcu_read_acquire_sched(void)
|
|
|
+{
|
|
|
+ rcu_lock_acquire(&rcu_sched_lock_map);
|
|
|
+}
|
|
|
+
|
|
|
+static inline void rcu_read_release_sched(void)
|
|
|
+{
|
|
|
+ rcu_lock_release(&rcu_sched_lock_map);
|
|
|
+}
|
|
|
|
|
|
extern int debug_lockdep_rcu_enabled(void);
|
|
|
|