rcu: Uninline multi-use function: finish_rcuwait()
This is a rarely used function, so uninlining its 3 instructions is probably a win or a wash - but the main motivation is to make <linux/rcuwait.h> independent of task_struct details. Signed-off-by: Ingo Molnar <mingo@kernel.org> Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
This commit is contained in:
parent
c099290310
commit
58d4292bd0
|
@ -47,11 +47,7 @@ static inline void prepare_to_rcuwait(struct rcuwait *w)
|
|||
rcu_assign_pointer(w->task, current);
|
||||
}
|
||||
|
||||
static inline void finish_rcuwait(struct rcuwait *w)
|
||||
{
|
||||
rcu_assign_pointer(w->task, NULL);
|
||||
__set_current_state(TASK_RUNNING);
|
||||
}
|
||||
extern void finish_rcuwait(struct rcuwait *w);
|
||||
|
||||
#define rcuwait_wait_event(w, condition, state) \
|
||||
({ \
|
||||
|
|
|
@ -407,6 +407,13 @@ void __wait_rcu_gp(bool checktiny, int n, call_rcu_func_t *crcu_array,
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(__wait_rcu_gp);
|
||||
|
||||
void finish_rcuwait(struct rcuwait *w)
|
||||
{
|
||||
rcu_assign_pointer(w->task, NULL);
|
||||
__set_current_state(TASK_RUNNING);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(finish_rcuwait);
|
||||
|
||||
#ifdef CONFIG_DEBUG_OBJECTS_RCU_HEAD
|
||||
void init_rcu_head(struct rcu_head *head)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue