Skip to content

Commit

Permalink
rcu: shrink rcutiny by making synchronize_rcu_bh() be inline
Browse files Browse the repository at this point in the history
Because synchronize_rcu_bh() is identical to synchronize_sched(),
make the former a static inline invoking the latter, saving the
overhead of an EXPORT_SYMBOL_GPL() and the duplicate code.

Signed-off-by: Paul E. McKenney <[email protected]>
  • Loading branch information
paulmck committed May 10, 2010
1 parent 32c141a commit da848c4
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 10 deletions.
2 changes: 0 additions & 2 deletions include/linux/rcupdate.h
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,6 @@ struct rcu_head {
};

/* Exported common interfaces */
extern void synchronize_rcu_bh(void);
extern void synchronize_sched(void);
extern void rcu_barrier(void);
extern void rcu_barrier_bh(void);
extern void rcu_barrier_sched(void);
Expand Down
12 changes: 11 additions & 1 deletion include/linux/rcutiny.h
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,17 @@ static inline void rcu_sched_force_quiescent_state(void)
{
}

#define synchronize_rcu synchronize_sched
extern void synchronize_sched(void);

static inline void synchronize_rcu(void)
{
synchronize_sched();
}

static inline void synchronize_rcu_bh(void)
{
synchronize_sched();
}

static inline void synchronize_rcu_expedited(void)
{
Expand Down
2 changes: 2 additions & 0 deletions include/linux/rcutree.h
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,8 @@ static inline void __rcu_read_unlock_bh(void)

extern void call_rcu_sched(struct rcu_head *head,
void (*func)(struct rcu_head *rcu));
extern void synchronize_rcu_bh(void);
extern void synchronize_sched(void);
extern void synchronize_rcu_expedited(void);

static inline void synchronize_rcu_bh_expedited(void)
Expand Down
9 changes: 2 additions & 7 deletions kernel/rcutiny.c
Original file line number Diff line number Diff line change
Expand Up @@ -187,20 +187,15 @@ static void rcu_process_callbacks(struct softirq_action *unused)
*
* Cool, huh? (Due to Josh Triplett.)
*
* But we want to make this a static inline later.
* But we want to make this a static inline later. The cond_resched()
* currently makes this problematic.
*/
void synchronize_sched(void)
{
cond_resched();
}
EXPORT_SYMBOL_GPL(synchronize_sched);

void synchronize_rcu_bh(void)
{
synchronize_sched();
}
EXPORT_SYMBOL_GPL(synchronize_rcu_bh);

/*
* Helper function for call_rcu() and call_rcu_bh().
*/
Expand Down

0 comments on commit da848c4

Please sign in to comment.