lkml.org 
[lkml]   [2008]   [Aug]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH, RFC, tip/core/rcu] scalable classic RCU implementation

    * Paul E. McKenney <paulmck@linux.vnet.ibm.com> wrote:

    > +#define MAX_RCU_LEVELS 3
    > +#if NR_CPUS <= CONFIG_RCU_FANOUT
    > +#define NUM_RCU_LEVELS 1
    > +#define NUM_RCU_LEVEL_1 1
    > +#define NUM_RCU_LEVEL_2 NR_CPUS
    > +#define NUM_RCU_LEVEL_3 0
    > +#define NUM_RCU_LEVEL_4 0
    > +#define NUM_RCU_NODES NUM_RCU_LEVEL_1
    > +#elif NR_CPUS <= CONFIG_RCU_FANOUT * CONFIG_RCU_FANOUT
    > +#define NUM_RCU_LEVELS 2
    > +#define NUM_RCU_LEVEL_1 1
    > +#define NUM_RCU_LEVEL_2 \
    > + (((NR_CPUS) + (CONFIG_RCU_FANOUT) - 1) / (CONFIG_RCU_FANOUT))
    > +#define NUM_RCU_LEVEL_3 NR_CPUS
    > +#define NUM_RCU_LEVEL_4 0
    > +#define NUM_RCU_NODES \
    > + ((NUM_RCU_LEVEL_1) + (NUM_RCU_LEVEL_2))
    > +#elif NR_CPUS <= CONFIG_RCU_FANOUT * CONFIG_RCU_FANOUT * CONFIG_RCU_FANOUT
    > +#define NUM_RCU_LEVELS 3
    > +#define RCU_FANOUT_SQ ((CONFIG_RCU_FANOUT) * (CONFIG_RCU_FANOUT))
    > +#define NUM_RCU_LEVEL_1 1
    > +#define NUM_RCU_LEVEL_2 \
    > + (((NR_CPUS) + (RCU_FANOUT_SQ) - 1) / (RCU_FANOUT_SQ))
    > +#define NUM_RCU_LEVEL_3 \
    > + ((NR_CPUS) + (CONFIG_RCU_FANOUT) - 1) / (CONFIG_RCU_FANOUT)
    > +#define NUM_RCU_LEVEL_4 NR_CPUS
    > +#define NUM_RCU_NODES \
    > + ((NUM_RCU_LEVEL_1) + \
    > + (NUM_RCU_LEVEL_2) + \
    > + (NUM_RCU_LEVEL_3))
    > +#else
    > +#error "CONFIG_RCU_FANOUT insufficient for NR_CPUS"
    > +#endif

    just a quick stylistic suggestion: if feasible then such sizing ugliness
    should be hidden in a Kconfig file. (if Kconfig is capable enough for
    this that is)

    Ingo


    \
     
     \ /
      Last update: 2008-08-22 06:47    [W:2.628 / U:1.048 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site