Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d8ab29f8 authored by Paul E. McKenney's avatar Paul E. McKenney Committed by Paul E. McKenney
Browse files

rcu: Remove one layer of abstraction from PROVE_RCU checking



Simplify things a bit by substituting the definitions of the single-line
rcu_read_acquire(), rcu_read_release(), rcu_read_acquire_bh(),
rcu_read_release_bh(), rcu_read_acquire_sched(), and
rcu_read_release_sched() functions at their call points.

Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Reviewed-by: default avatarJosh Triplett <josh@joshtriplett.org>
parent 00f49e57
Loading
Loading
Loading
Loading
+8 −45
Original line number Diff line number Diff line
@@ -250,41 +250,8 @@ static inline void rcu_lock_release(struct lockdep_map *map)
}

extern struct lockdep_map rcu_lock_map;

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;

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;

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);

/**
@@ -364,12 +331,8 @@ static inline int rcu_read_lock_sched_held(void)

#else /* #ifdef CONFIG_DEBUG_LOCK_ALLOC */

# define rcu_read_acquire()		do { } while (0)
# define rcu_read_release()		do { } while (0)
# define rcu_read_acquire_bh()		do { } while (0)
# define rcu_read_release_bh()		do { } while (0)
# define rcu_read_acquire_sched()	do { } while (0)
# define rcu_read_release_sched()	do { } while (0)
# define rcu_lock_acquire(a)		do { } while (0)
# define rcu_lock_release(a)		do { } while (0)

static inline int rcu_read_lock_held(void)
{
@@ -690,7 +653,7 @@ static inline void rcu_read_lock(void)
{
	__rcu_read_lock();
	__acquire(RCU);
	rcu_read_acquire();
	rcu_lock_acquire(&rcu_lock_map);
}

/*
@@ -710,7 +673,7 @@ static inline void rcu_read_lock(void)
 */
static inline void rcu_read_unlock(void)
{
	rcu_read_release();
	rcu_lock_release(&rcu_lock_map);
	__release(RCU);
	__rcu_read_unlock();
}
@@ -731,7 +694,7 @@ static inline void rcu_read_lock_bh(void)
{
	local_bh_disable();
	__acquire(RCU_BH);
	rcu_read_acquire_bh();
	rcu_lock_acquire(&rcu_bh_lock_map);
}

/*
@@ -741,7 +704,7 @@ static inline void rcu_read_lock_bh(void)
 */
static inline void rcu_read_unlock_bh(void)
{
	rcu_read_release_bh();
	rcu_lock_release(&rcu_bh_lock_map);
	__release(RCU_BH);
	local_bh_enable();
}
@@ -758,7 +721,7 @@ static inline void rcu_read_lock_sched(void)
{
	preempt_disable();
	__acquire(RCU_SCHED);
	rcu_read_acquire_sched();
	rcu_lock_acquire(&rcu_sched_lock_map);
}

/* Used by lockdep and tracing: cannot be traced, cannot call lockdep. */
@@ -775,7 +738,7 @@ static inline notrace void rcu_read_lock_sched_notrace(void)
 */
static inline void rcu_read_unlock_sched(void)
{
	rcu_read_release_sched();
	rcu_lock_release(&rcu_sched_lock_map);
	__release(RCU_SCHED);
	preempt_enable();
}