lkml.org 
[lkml]   [2011]   [May]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH tip/core/rcu 2/3] atomic: add atomic_or()
    Date
    From: Paul E. McKenney <paul.mckenney@linaro.org>

    An atomic_or() function is needed by TREE_RCU to avoid deadlock, so
    add a generic version.

    Signed-off-by: Paul E. McKenney <paul.mckenney@linaro.org>
    Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    ---
    include/linux/atomic.h | 13 +++++++++++++
    1 files changed, 13 insertions(+), 0 deletions(-)

    diff --git a/include/linux/atomic.h b/include/linux/atomic.h
    index 96c038e..ee456c7 100644
    --- a/include/linux/atomic.h
    +++ b/include/linux/atomic.h
    @@ -34,4 +34,17 @@ static inline int atomic_inc_not_zero_hint(atomic_t *v, int hint)
    }
    #endif

    +#ifndef CONFIG_ARCH_HAS_ATOMIC_OR
    +static inline void atomic_or(int i, atomic_t *v)
    +{
    + int old;
    + int new;
    +
    + do {
    + old = atomic_read(v);
    + new = old | i;
    + } while (atomic_cmpxchg(v, old, new) != old);
    +}
    +#endif /* #ifndef CONFIG_ARCH_HAS_ATOMIC_OR */
    +
    #endif /* _LINUX_ATOMIC_H */
    --
    1.7.3.2


    \
     
     \ /
      Last update: 2011-05-11 23:01    [W:0.020 / U:31.912 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site