diff options
author | Gaetan Rivet <grive@u256.net> | 2021-09-08 11:47:35 +0200 |
---|---|---|
committer | Ilya Maximets <i.maximets@ovn.org> | 2022-01-18 19:30:17 +0100 |
commit | 5878b9252209528d04c481c425f4bd41ab7943b6 (patch) | |
tree | a73037cbfdf25e094efe5c961c673b3303a0074e /lib/ovs-atomic-gcc4+.h | |
parent | 83823ae328aeee295d50cec57b9dc926fa3d1cf6 (diff) | |
download | openvswitch-5878b9252209528d04c481c425f4bd41ab7943b6.tar.gz |
ovs-atomic: Expose atomic exchange operation.
The atomic exchange operation is a useful primitive that should be
available as well. Most compilers already expose or offer a way
to use it, but a single symbol needs to be defined.
Signed-off-by: Gaetan Rivet <grive@u256.net>
Reviewed-by: Eli Britstein <elibr@nvidia.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
Diffstat (limited to 'lib/ovs-atomic-gcc4+.h')
-rw-r--r-- | lib/ovs-atomic-gcc4+.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/lib/ovs-atomic-gcc4+.h b/lib/ovs-atomic-gcc4+.h index 25bcf20a0..f9accde1a 100644 --- a/lib/ovs-atomic-gcc4+.h +++ b/lib/ovs-atomic-gcc4+.h @@ -128,6 +128,11 @@ atomic_signal_fence(memory_order order) #define atomic_compare_exchange_weak_explicit \ atomic_compare_exchange_strong_explicit +#define atomic_exchange_explicit(DST, SRC, ORDER) \ + __sync_lock_test_and_set(DST, SRC) +#define atomic_exchange(DST, SRC) \ + atomic_exchange_explicit(DST, SRC, memory_order_seq_cst) + #define atomic_op__(RMW, OP, ARG, ORIG) \ ({ \ typeof(RMW) rmw__ = (RMW); \ |