git.droids-corp.org
/
dpdk.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
eal: introduce atomic exchange operation
[dpdk.git]
/
lib
/
librte_eal
/
common
/
include
/
arch
/
x86
/
rte_atomic_64.h
diff --git
a/lib/librte_eal/common/include/arch/x86/rte_atomic_64.h
b/lib/librte_eal/common/include/arch/x86/rte_atomic_64.h
index
1a53a76
..
fd2ec9c
100644
(file)
--- a/
lib/librte_eal/common/include/arch/x86/rte_atomic_64.h
+++ b/
lib/librte_eal/common/include/arch/x86/rte_atomic_64.h
@@
-71,6
+71,18
@@
rte_atomic64_cmpset(volatile uint64_t *dst, uint64_t exp, uint64_t src)
return res;
}
return res;
}
+static inline uint64_t
+rte_atomic64_exchange(volatile uint64_t *dst, uint64_t val)
+{
+ asm volatile(
+ MPLOCKED
+ "xchgq %0, %1;"
+ : "=r" (val), "=m" (*dst)
+ : "0" (val), "m" (*dst)
+ : "memory"); /* no-clobber list */
+ return val;
+}
+
static inline void
rte_atomic64_init(rte_atomic64_t *v)
{
static inline void
rte_atomic64_init(rte_atomic64_t *v)
{