lkml.org 
[lkml]   [2010]   [Nov]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[thisops uV3 07/18] highmem: Use this_cpu_xx_return() operations
    Use this_cpu operations to optimize access primitives for highmem.

    The main effect is the avoidance of address calculations through the
    use of a segment prefix.

    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Christoph Lameter <cl@linux.com>

    ---
    include/linux/highmem.h | 7 ++++---
    1 file changed, 4 insertions(+), 3 deletions(-)

    Index: linux-2.6/include/linux/highmem.h
    ===================================================================
    --- linux-2.6.orig/include/linux/highmem.h 2010-11-22 14:43:40.000000000 -0600
    +++ linux-2.6/include/linux/highmem.h 2010-11-22 14:45:02.000000000 -0600
    @@ -81,7 +81,8 @@ DECLARE_PER_CPU(int, __kmap_atomic_idx);

    static inline int kmap_atomic_idx_push(void)
    {
    - int idx = __get_cpu_var(__kmap_atomic_idx)++;
    + int idx = __this_cpu_inc_return(__kmap_atomic_idx) - 1;
    +
    #ifdef CONFIG_DEBUG_HIGHMEM
    WARN_ON_ONCE(in_irq() && !irqs_disabled());
    BUG_ON(idx > KM_TYPE_NR);
    @@ -91,12 +92,12 @@ static inline int kmap_atomic_idx_push(v

    static inline int kmap_atomic_idx(void)
    {
    - return __get_cpu_var(__kmap_atomic_idx) - 1;
    + return __this_cpu_read(__kmap_atomic_idx) - 1;
    }

    static inline int kmap_atomic_idx_pop(void)
    {
    - int idx = --__get_cpu_var(__kmap_atomic_idx);
    + int idx = __this_cpu_dec_return(__kmap_atomic_idx);
    #ifdef CONFIG_DEBUG_HIGHMEM
    BUG_ON(idx < 0);
    #endif


    \
     
     \ /
      Last update: 2010-11-30 20:13    [W:0.025 / U:36.424 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site