lkml.org 
[lkml]   [2007]   [Nov]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch 14/28] cpu alloc: SRCU
    Signed-off-by: Christoph Lameter <clameter@sgi.com>

    ---
    kernel/rcutorture.c | 4 ++--
    kernel/srcu.c | 13 +++++++------
    2 files changed, 9 insertions(+), 8 deletions(-)

    Index: linux-2.6/kernel/srcu.c
    ===================================================================
    --- linux-2.6.orig/kernel/srcu.c 2007-11-04 19:32:38.000000000 -0800
    +++ linux-2.6/kernel/srcu.c 2007-11-04 19:38:09.000000000 -0800
    @@ -26,7 +26,7 @@

    #include <linux/module.h>
    #include <linux/mutex.h>
    -#include <linux/percpu.h>
    +#include <linux/cpu_alloc.h>
    #include <linux/preempt.h>
    #include <linux/rcupdate.h>
    #include <linux/sched.h>
    @@ -46,7 +46,8 @@ int init_srcu_struct(struct srcu_struct
    {
    sp->completed = 0;
    mutex_init(&sp->mutex);
    - sp->per_cpu_ref = alloc_percpu(struct srcu_struct_array);
    + sp->per_cpu_ref = CPU_ALLOC(struct srcu_struct_array,
    + GFP_KERNEL|__GFP_ZERO);
    return (sp->per_cpu_ref ? 0 : -ENOMEM);
    }

    @@ -62,7 +63,7 @@ static int srcu_readers_active_idx(struc

    sum = 0;
    for_each_possible_cpu(cpu)
    - sum += per_cpu_ptr(sp->per_cpu_ref, cpu)->c[idx];
    + sum += CPU_PTR(sp->per_cpu_ref, cpu)->c[idx];
    return sum;
    }

    @@ -94,7 +95,7 @@ void cleanup_srcu_struct(struct srcu_str
    WARN_ON(sum); /* Leakage unless caller handles error. */
    if (sum != 0)
    return;
    - free_percpu(sp->per_cpu_ref);
    + CPU_FREE(sp->per_cpu_ref);
    sp->per_cpu_ref = NULL;
    }

    @@ -113,7 +114,7 @@ int srcu_read_lock(struct srcu_struct *s
    preempt_disable();
    idx = sp->completed & 0x1;
    barrier(); /* ensure compiler looks -once- at sp->completed. */
    - per_cpu_ptr(sp->per_cpu_ref, smp_processor_id())->c[idx]++;
    + THIS_CPU(sp->per_cpu_ref)->c[idx]++;
    srcu_barrier(); /* ensure compiler won't misorder critical section. */
    preempt_enable();
    return idx;
    @@ -133,7 +134,7 @@ void srcu_read_unlock(struct srcu_struct
    {
    preempt_disable();
    srcu_barrier(); /* ensure compiler won't misorder critical section. */
    - per_cpu_ptr(sp->per_cpu_ref, smp_processor_id())->c[idx]--;
    + THIS_CPU(sp->per_cpu_ref)->c[idx]--;
    preempt_enable();
    }

    Index: linux-2.6/kernel/rcutorture.c
    ===================================================================
    --- linux-2.6.orig/kernel/rcutorture.c 2007-11-04 19:32:38.000000000 -0800
    +++ linux-2.6/kernel/rcutorture.c 2007-11-04 19:33:51.000000000 -0800
    @@ -441,8 +441,8 @@ static int srcu_torture_stats(char *page
    torture_type, TORTURE_FLAG, idx);
    for_each_possible_cpu(cpu) {
    cnt += sprintf(&page[cnt], " %d(%d,%d)", cpu,
    - per_cpu_ptr(srcu_ctl.per_cpu_ref, cpu)->c[!idx],
    - per_cpu_ptr(srcu_ctl.per_cpu_ref, cpu)->c[idx]);
    + CPU_PTR(srcu_ctl.per_cpu_ref, cpu)->c[!idx],
    + CPU_PTR(srcu_ctl.per_cpu_ref, cpu)->c[idx]);
    }
    cnt += sprintf(&page[cnt], "\n");
    return cnt;
    --
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2007-11-06 21:05    [W:0.041 / U:0.132 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site