lkml.org 
[lkml]   [2009]   [Apr]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip:perfcounters/core] x86, perfcounters: add atomic64_xchg()
    Commit-ID:  98c2aaf8be5baf7193be37fb28bce8e7327158bc
    Gitweb: http://git.kernel.org/tip/98c2aaf8be5baf7193be37fb28bce8e7327158bc
    Author: Ingo Molnar <mingo@elte.hu>
    AuthorDate: Tue, 7 Apr 2009 11:30:17 +0200
    Committer: Ingo Molnar <mingo@elte.hu>
    CommitDate: Tue, 7 Apr 2009 12:02:41 +0200

    x86, perfcounters: add atomic64_xchg()

    Complete atomic64_t support on the 32-bit side by adding atomic64_xch().

    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    LKML-Reference: <20090406094518.445450972@chello.nl>
    Signed-off-by: Ingo Molnar <mingo@elte.hu>


    ---
    arch/x86/include/asm/atomic_32.h | 24 +++++++++++++++++++++---
    1 files changed, 21 insertions(+), 3 deletions(-)

    diff --git a/arch/x86/include/asm/atomic_32.h b/arch/x86/include/asm/atomic_32.h
    index 977250e..aff9f1f 100644
    --- a/arch/x86/include/asm/atomic_32.h
    +++ b/arch/x86/include/asm/atomic_32.h
    @@ -291,19 +291,37 @@ atomic64_cmpxchg(atomic64_t *ptr, unsigned long long old_val,
    }

    /**
    - * atomic64_set - set atomic64 variable
    + * atomic64_xchg - xchg atomic64 variable
    * @ptr: pointer to type atomic64_t
    * @new_val: value to assign
    + * @old_val: old value that was there
    *
    - * Atomically sets the value of @ptr to @new_val.
    + * Atomically xchgs the value of @ptr to @new_val and returns
    + * the old value.
    */
    -static inline void atomic64_set(atomic64_t *ptr, unsigned long long new_val)
    +
    +static inline unsigned long long
    +atomic64_xchg(atomic64_t *ptr, unsigned long long new_val)
    {
    unsigned long long old_val;

    do {
    old_val = atomic_read(ptr);
    } while (atomic64_cmpxchg(ptr, old_val, new_val) != old_val);
    +
    + return old_val;
    +}
    +
    +/**
    + * atomic64_set - set atomic64 variable
    + * @ptr: pointer to type atomic64_t
    + * @new_val: value to assign
    + *
    + * Atomically sets the value of @ptr to @new_val.
    + */
    +static inline void atomic64_set(atomic64_t *ptr, unsigned long long new_val)
    +{
    + atomic64_xchg(ptr, new_val);
    }

    /**

    \
     
     \ /
      Last update: 2009-04-07 12:11    [W:0.026 / U:0.156 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site