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: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
This commit is contained in:
parent
53d84e004d
commit
a3dc3fb161
5 changed files with 15 additions and 20 deletions
|
@ -47,6 +47,9 @@
|
||||||
extern int rcutorture_runnable; /* for sysctl */
|
extern int rcutorture_runnable; /* for sysctl */
|
||||||
#endif /* #ifdef CONFIG_RCU_TORTURE_TEST */
|
#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
|
* struct rcu_head - callback structure for use with RCU
|
||||||
* @next: next update requests in a list
|
* @next: next update requests in a list
|
||||||
|
@ -66,6 +69,18 @@ extern int sched_expedited_torture_stats(char *page);
|
||||||
/* Internal to kernel */
|
/* Internal to kernel */
|
||||||
extern void rcu_init(void);
|
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)
|
#if defined(CONFIG_TREE_RCU) || defined(CONFIG_TREE_PREEMPT_RCU)
|
||||||
#include <linux/rcutree.h>
|
#include <linux/rcutree.h>
|
||||||
#elif defined(CONFIG_TINY_RCU) || defined(CONFIG_TINY_PREEMPT_RCU)
|
#elif defined(CONFIG_TINY_RCU) || defined(CONFIG_TINY_PREEMPT_RCU)
|
||||||
|
|
|
@ -133,13 +133,6 @@ static inline int rcu_needs_cpu(int cpu)
|
||||||
return rcu_preempt_needs_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 */
|
#endif /* #else #ifdef CONFIG_TINY_RCU */
|
||||||
|
|
||||||
static inline void rcu_note_context_switch(int cpu)
|
static inline void rcu_note_context_switch(int cpu)
|
||||||
|
|
|
@ -45,12 +45,6 @@ extern void __rcu_read_unlock(void);
|
||||||
extern void synchronize_rcu(void);
|
extern void synchronize_rcu(void);
|
||||||
extern void exit_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 */
|
#else /* #ifdef CONFIG_TREE_PREEMPT_RCU */
|
||||||
|
|
||||||
static inline void __rcu_read_lock(void)
|
static inline void __rcu_read_lock(void)
|
||||||
|
|
|
@ -26,10 +26,6 @@
|
||||||
|
|
||||||
#include <linux/delay.h>
|
#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. */
|
/* Global control variables for preemptible RCU. */
|
||||||
struct rcu_preempt_ctrlblk {
|
struct rcu_preempt_ctrlblk {
|
||||||
struct rcu_ctrlblk rcb; /* curtail: ->next ptr of last CB for GP. */
|
struct rcu_ctrlblk rcb; /* curtail: ->next ptr of last CB for GP. */
|
||||||
|
|
|
@ -272,9 +272,6 @@ struct rcu_data {
|
||||||
|
|
||||||
#endif /* #ifdef CONFIG_RCU_CPU_STALL_DETECTOR */
|
#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
|
* RCU global state, including node hierarchy. This hierarchy is
|
||||||
* represented in "heap" form in a dense array. The root (first level)
|
* represented in "heap" form in a dense array. The root (first level)
|
||||||
|
|
Loading…
Add table
Reference in a new issue