lkml.org 
[lkml]   [2010]   [Apr]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH tip/core/rcu 07/23] rcu: shrink rcutiny by making synchronize_rcu_bh() be inline
    Date
    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 <paulmck@linux.vnet.ibm.com>
    ---
    include/linux/rcupdate.h | 2 --
    include/linux/rcutiny.h | 12 +++++++++++-
    include/linux/rcutree.h | 2 ++
    kernel/rcutiny.c | 9 ++-------
    4 files changed, 15 insertions(+), 10 deletions(-)

    diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h
    index 07c8591..08a04b1 100644
    --- a/include/linux/rcupdate.h
    +++ b/include/linux/rcupdate.h
    @@ -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);
    diff --git a/include/linux/rcutiny.h b/include/linux/rcutiny.h
    index a519587..bbeb55b 100644
    --- a/include/linux/rcutiny.h
    +++ b/include/linux/rcutiny.h
    @@ -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)
    {
    diff --git a/include/linux/rcutree.h b/include/linux/rcutree.h
    index 42cc3a0..7484fe6 100644
    --- a/include/linux/rcutree.h
    +++ b/include/linux/rcutree.h
    @@ -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)
    diff --git a/kernel/rcutiny.c b/kernel/rcutiny.c
    index 9f6d9ff..272c6d2 100644
    --- a/kernel/rcutiny.c
    +++ b/kernel/rcutiny.c
    @@ -187,7 +187,8 @@ 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)
    {
    @@ -195,12 +196,6 @@ void synchronize_sched(void)
    }
    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().
    */
    --
    1.7.0


    \
     
     \ /
      Last update: 2010-04-20 23:47    [W:0.025 / U:29.360 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site