restricted transactional memory
Concurrency Kit (libck, -lck)
unsigned int status);
These family of functions implement support for restricted transactional memory,
if available on the underlying platform. Currently, support is only provided
for Intel Haswell and newer x86 microarchitectures that have the TSX-NI
ck_pr_rtm_begin() function returns
CK_PR_RTM_STARTED if a transaction was successfully started. In case of an
abort, either internal (through a ck_pr_rtm_abort) or external, program flow
will return to the point which the function was called except the return
value will consist of a bitmap with one or more of the following bits
- Set if the transactionally was explicitly aborted through
- Set if the transaction failed but can still succeed if retried.
- The transaction failed due to a conflict in one of the memory addresses
that are part of the working set of the transaction.
- Set if the architecture-defined transaction size limit was exceeded.
- Set if a hardware breakpoint was triggered.
- Set if a nested transaction failed.
The user is also able to specify a one byte abort status by
ck_pr_rtm_abort(). This status byte can be
extracted by calling the
with the return value of
ck_pr_rtm_begin() as an
argument. The return value of
be the value of this status byte. For additional information, please see the
Intel instruction set manuals.
Additional information available at http://concurrencykit.org/