[0/1] Add 128-bit compare and set

Message ID 20190128172945.27251-1-gage.eads@intel.com
Headers show
  • Add 128-bit compare and set
Related show


Eads, Gage Jan. 28, 2019, 5:29 p.m.
This patch addresses x86-64 only; other architectures can/will be supported
in the future. The __atomic intrinsic was considered for the
implementation, however libatomic was found[1] to use locks to implement
the 128-bit CAS on at least one architecture and so is eschewed here.
The interface is modeled after the __atomic_compare_exchange_16 (which
itself is based on the C++11 memory model) to best support weak
consistency architectures.

This patch was originally part of a series that introduces a non-blocking stack
mempool handler[2], and is required by a non-blocking ring patchset. This
patch was spun off so that the the NB ring depends only on this patch
and not the entire non-blocking stack patchset.

[1] http://mails.dpdk.org/archives/dev/2019-January/124002.html
[1] http://mails.dpdk.org/archives/dev/2019-January/123653.html

Gage Eads (1):
  eal: add 128-bit cmpset (x86-64 only)

 .../common/include/arch/x86/rte_atomic_64.h        | 31 +++++++++++
 lib/librte_eal/common/include/generic/rte_atomic.h | 65 ++++++++++++++++++++++
 2 files changed, 96 insertions(+)