lkml.org 
[lkml]   [2023]   [Mar]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH v7 06/13] add this_cpu_cmpxchg_local and asm-generic definitions
    Goal is to have vmstat_shepherd to transfer from
    per-CPU counters to global counters remotely. For this,
    an atomic this_cpu_cmpxchg is necessary.

    Add this_cpu_cmpxchg_local_ helpers to asm-generic/percpu.h.

    Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>

    ---

    Index: linux-vmstat-remote/include/asm-generic/percpu.h
    ===================================================================
    --- linux-vmstat-remote.orig/include/asm-generic/percpu.h
    +++ linux-vmstat-remote/include/asm-generic/percpu.h
    @@ -424,6 +424,23 @@ do { \
    this_cpu_generic_cmpxchg(pcp, oval, nval)
    #endif

    +#ifndef this_cpu_cmpxchg_local_1
    +#define this_cpu_cmpxchg_local_1(pcp, oval, nval) \
    + this_cpu_generic_cmpxchg(pcp, oval, nval)
    +#endif
    +#ifndef this_cpu_cmpxchg_local_2
    +#define this_cpu_cmpxchg_local_2(pcp, oval, nval) \
    + this_cpu_generic_cmpxchg(pcp, oval, nval)
    +#endif
    +#ifndef this_cpu_cmpxchg_local_4
    +#define this_cpu_cmpxchg_local_4(pcp, oval, nval) \
    + this_cpu_generic_cmpxchg(pcp, oval, nval)
    +#endif
    +#ifndef this_cpu_cmpxchg_local_8
    +#define this_cpu_cmpxchg_local_8(pcp, oval, nval) \
    + this_cpu_generic_cmpxchg(pcp, oval, nval)
    +#endif
    +
    #ifndef this_cpu_cmpxchg_double_1
    #define this_cpu_cmpxchg_double_1(pcp1, pcp2, oval1, oval2, nval1, nval2) \
    this_cpu_generic_cmpxchg_double(pcp1, pcp2, oval1, oval2, nval1, nval2)
    Index: linux-vmstat-remote/include/linux/percpu-defs.h
    ===================================================================
    --- linux-vmstat-remote.orig/include/linux/percpu-defs.h
    +++ linux-vmstat-remote/include/linux/percpu-defs.h
    @@ -513,6 +513,8 @@ do { \
    #define this_cpu_xchg(pcp, nval) __pcpu_size_call_return2(this_cpu_xchg_, pcp, nval)
    #define this_cpu_cmpxchg(pcp, oval, nval) \
    __pcpu_size_call_return2(this_cpu_cmpxchg_, pcp, oval, nval)
    +#define this_cpu_cmpxchg_local(pcp, oval, nval) \
    + __pcpu_size_call_return2(this_cpu_cmpxchg_local_, pcp, oval, nval)
    #define this_cpu_cmpxchg_double(pcp1, pcp2, oval1, oval2, nval1, nval2) \
    __pcpu_double_call_return_bool(this_cpu_cmpxchg_double_, pcp1, pcp2, oval1, oval2, nval1, nval2)


    \
     
     \ /
      Last update: 2023-03-27 01:09    [W:2.961 / U:0.064 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site