[dpdk-dev] [PATCH v5 2/4] examples: add lthread subsystem for performance-thread
Stephen Hemminger
stephen at networkplumber.org
Thu Dec 3 17:31:39 CET 2015
On Thu, 3 Dec 2015 09:28:23 +0000
ibetts <ian.betts at intel.com> wrote:
> +/*
> + * Atomically set a value and return the old value
> + */
> +static inline uint64_t
> +atomic64_xchg(uint64_t *ptr, uint64_t val) __attribute__ ((always_inline));
> +static inline uint64_t
> +atomic64_xchg(uint64_t *ptr, uint64_t val)
You don't need a forward declaration for this.
Instead do:
static inline uint64_t __attribute__((always_inline))
atomic_xchg64(uint64_t *ptr, uint64_t val)
Really should be in rte_atomic.h as a primitive
and the assembly macro is missing change to ptr so Gcc might optmize it away.
Something like this mayb?
static inline uint64_t __attribute__ ((always_inline));
rte_atomic64_xchg(uint64_t *ptr, uint64_t val)
{
asm volatile (
MPLOCKED
"xchgq %[ptr],%[val];"
: [val] "=r" (val)
[ptr] "=m" (*ptr)
: [ptr] "m" (*ptr),
"a" (val)
: "memory");
return val;
}
More information about the dev
mailing list