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

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

rcu: repair code-duplication FIXMEs



Combine the duplicate definitions of ULONG_CMP_GE(), ULONG_CMP_LT(),
and rcu_preempt_depth() into include/linux/rcupdate.h.

Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
parent 53d84e00
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -47,6 +47,9 @@
extern int rcutorture_runnable; /* for sysctl */
#endif /* #ifdef CONFIG_RCU_TORTURE_TEST */

#define ULONG_CMP_GE(a, b)	(ULONG_MAX / 2 >= (a) - (b))
#define ULONG_CMP_LT(a, b)	(ULONG_MAX / 2 < (a) - (b))

/**
 * struct rcu_head - callback structure for use with RCU
 * @next: next update requests in a list
@@ -66,6 +69,18 @@ extern int sched_expedited_torture_stats(char *page);
/* Internal to kernel */
extern void rcu_init(void);

#ifdef CONFIG_PREEMPT_RCU

/*
 * Defined as a macro as it is a very low level header included from
 * areas that don't even know about current.  This gives the rcu_read_lock()
 * nesting depth, but makes sense only if CONFIG_PREEMPT_RCU -- in other
 * types of kernel builds, the rcu_read_lock() nesting depth is unknowable.
 */
#define rcu_preempt_depth() (current->rcu_read_lock_nesting)

#endif /* #ifdef CONFIG_PREEMPT_RCU */

#if defined(CONFIG_TREE_RCU) || defined(CONFIG_TREE_PREEMPT_RCU)
#include <linux/rcutree.h>
#elif defined(CONFIG_TINY_RCU) || defined(CONFIG_TINY_PREEMPT_RCU)
+0 −7
Original line number Diff line number Diff line
@@ -133,13 +133,6 @@ static inline int rcu_needs_cpu(int cpu)
	return rcu_preempt_needs_cpu();
}

/*
 * Defined as macro as it is a very low level header
 * included from areas that don't even know about current
 * FIXME: combine with include/linux/rcutree.h into rcupdate.h.
 */
#define rcu_preempt_depth() (current->rcu_read_lock_nesting)

#endif /* #else #ifdef CONFIG_TINY_RCU */

static inline void rcu_note_context_switch(int cpu)
+0 −6
Original line number Diff line number Diff line
@@ -45,12 +45,6 @@ extern void __rcu_read_unlock(void);
extern void synchronize_rcu(void);
extern void exit_rcu(void);

/*
 * Defined as macro as it is a very low level header
 * included from areas that don't even know about current
 */
#define rcu_preempt_depth() (current->rcu_read_lock_nesting)

#else /* #ifdef CONFIG_TREE_PREEMPT_RCU */

static inline void __rcu_read_lock(void)
+0 −4
Original line number Diff line number Diff line
@@ -26,10 +26,6 @@

#include <linux/delay.h>

/* FIXME: merge with definitions in kernel/rcutree.h. */
#define ULONG_CMP_GE(a, b)	(ULONG_MAX / 2 >= (a) - (b))
#define ULONG_CMP_LT(a, b)	(ULONG_MAX / 2 < (a) - (b))

/* Global control variables for preemptible RCU. */
struct rcu_preempt_ctrlblk {
	struct rcu_ctrlblk rcb;	/* curtail: ->next ptr of last CB for GP. */
+0 −3
Original line number Diff line number Diff line
@@ -272,9 +272,6 @@ struct rcu_data {

#endif /* #ifdef CONFIG_RCU_CPU_STALL_DETECTOR */

#define ULONG_CMP_GE(a, b)	(ULONG_MAX / 2 >= (a) - (b))
#define ULONG_CMP_LT(a, b)	(ULONG_MAX / 2 < (a) - (b))

/*
 * RCU global state, including node hierarchy.  This hierarchy is
 * represented in "heap" form in a dense array.  The root (first level)