rcu: Eliminate unused APIs intended for adaptive ticks
The rcu_user_enter_after_irq() and rcu_user_exit_after_irq() functions were intended for use by adaptive ticks, but changes in implementation have rendered them unnecessary. This commit therefore removes them. Reported-by: Frederic Weisbecker <fweisbec@gmail.com> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Reviewed-by: Josh Triplett <josh@joshtriplett.org>
This commit is contained in:
parent
f7f7bac9cb
commit
feed66ed26
|
@ -229,13 +229,9 @@ extern void rcu_irq_exit(void);
|
||||||
#ifdef CONFIG_RCU_USER_QS
|
#ifdef CONFIG_RCU_USER_QS
|
||||||
extern void rcu_user_enter(void);
|
extern void rcu_user_enter(void);
|
||||||
extern void rcu_user_exit(void);
|
extern void rcu_user_exit(void);
|
||||||
extern void rcu_user_enter_after_irq(void);
|
|
||||||
extern void rcu_user_exit_after_irq(void);
|
|
||||||
#else
|
#else
|
||||||
static inline void rcu_user_enter(void) { }
|
static inline void rcu_user_enter(void) { }
|
||||||
static inline void rcu_user_exit(void) { }
|
static inline void rcu_user_exit(void) { }
|
||||||
static inline void rcu_user_enter_after_irq(void) { }
|
|
||||||
static inline void rcu_user_exit_after_irq(void) { }
|
|
||||||
static inline void rcu_user_hooks_switch(struct task_struct *prev,
|
static inline void rcu_user_hooks_switch(struct task_struct *prev,
|
||||||
struct task_struct *next) { }
|
struct task_struct *next) { }
|
||||||
#endif /* CONFIG_RCU_USER_QS */
|
#endif /* CONFIG_RCU_USER_QS */
|
||||||
|
|
|
@ -444,27 +444,6 @@ void rcu_user_enter(void)
|
||||||
{
|
{
|
||||||
rcu_eqs_enter(1);
|
rcu_eqs_enter(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* rcu_user_enter_after_irq - inform RCU that we are going to resume userspace
|
|
||||||
* after the current irq returns.
|
|
||||||
*
|
|
||||||
* This is similar to rcu_user_enter() but in the context of a non-nesting
|
|
||||||
* irq. After this call, RCU enters into idle mode when the interrupt
|
|
||||||
* returns.
|
|
||||||
*/
|
|
||||||
void rcu_user_enter_after_irq(void)
|
|
||||||
{
|
|
||||||
unsigned long flags;
|
|
||||||
struct rcu_dynticks *rdtp;
|
|
||||||
|
|
||||||
local_irq_save(flags);
|
|
||||||
rdtp = &__get_cpu_var(rcu_dynticks);
|
|
||||||
/* Ensure this irq is interrupting a non-idle RCU state. */
|
|
||||||
WARN_ON_ONCE(!(rdtp->dynticks_nesting & DYNTICK_TASK_MASK));
|
|
||||||
rdtp->dynticks_nesting = 1;
|
|
||||||
local_irq_restore(flags);
|
|
||||||
}
|
|
||||||
#endif /* CONFIG_RCU_USER_QS */
|
#endif /* CONFIG_RCU_USER_QS */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -581,28 +560,6 @@ void rcu_user_exit(void)
|
||||||
{
|
{
|
||||||
rcu_eqs_exit(1);
|
rcu_eqs_exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* rcu_user_exit_after_irq - inform RCU that we won't resume to userspace
|
|
||||||
* idle mode after the current non-nesting irq returns.
|
|
||||||
*
|
|
||||||
* This is similar to rcu_user_exit() but in the context of an irq.
|
|
||||||
* This is called when the irq has interrupted a userspace RCU idle mode
|
|
||||||
* context. When the current non-nesting interrupt returns after this call,
|
|
||||||
* the CPU won't restore the RCU idle mode.
|
|
||||||
*/
|
|
||||||
void rcu_user_exit_after_irq(void)
|
|
||||||
{
|
|
||||||
unsigned long flags;
|
|
||||||
struct rcu_dynticks *rdtp;
|
|
||||||
|
|
||||||
local_irq_save(flags);
|
|
||||||
rdtp = &__get_cpu_var(rcu_dynticks);
|
|
||||||
/* Ensure we are interrupting an RCU idle mode. */
|
|
||||||
WARN_ON_ONCE(rdtp->dynticks_nesting & DYNTICK_TASK_NEST_MASK);
|
|
||||||
rdtp->dynticks_nesting += DYNTICK_TASK_EXIT_IDLE;
|
|
||||||
local_irq_restore(flags);
|
|
||||||
}
|
|
||||||
#endif /* CONFIG_RCU_USER_QS */
|
#endif /* CONFIG_RCU_USER_QS */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue