1ck_pr_rtm(3)             BSD Library Functions Manual             ck_pr_rtm(3)
2

NAME

4     ck_pr_rtm_begin, ck_pr_rtm_end, ck_pr_rtm_abort, ck_pr_rtm_test 
5     restricted transactional memory
6

LIBRARY

8     Concurrency Kit (libck, -lck)
9

SYNOPSIS

11     #include <ck_pr.h>
12
13     unsigned int
14     ck_pr_rtm_begin(void);
15
16     void
17     ck_pr_rtm_end(void);
18
19     void
20     ck_pr_rtm_abort(const unsigned int status);
21
22     bool
23     ck_pr_rtm_test(void);
24

DESCRIPTION

26     These family of functions implement support for restricted transactional
27     memory, if available on the underlying platform.  Currently, support is
28     only provided for Intel Haswell and newer x86 microarchitectures that
29     have the TSX-NI feature.
30
31     The ck_pr_rtm_begin() function returns CK_PR_RTM_STARTED if a transaction
32     was successfully started. In case of an abort, either internal (through a
33     ck_pr_rtm_abort) or external, program flow will return to the point which
34     the function was called except the return value will consist of a bitmap
35     with one or more of the following bits set:
36
37     CK_PR_RTM_EXPLICIT
38             Set if the transactionally was explicitly aborted through
39             ck_pr_rtm_abort().
40
41     CK_PR_RTM_RETRY
42             Set if the transaction failed but can still succeed if retried.
43
44     CK_PR_RTM_CONFLICT
45             The transaction failed due to a conflict in one of the memory
46             addresses that are part of the working set of the transaction.
47
48     CK_PR_RTM_CAPACITY
49             Set if the architecture-defined transaction size limit was
50             exceeded.
51
52     CK_PR_RTM_DEBUG
53             Set if a hardware breakpoint was triggered.
54
55     CK_PR_RTM_NESTED
56             Set if a nested transaction failed.
57
58     The user is also able to specify a one byte abort status by calling
59     ck_pr_rtm_abort().  This status byte can be extracted by calling the
60     CK_PR_RTM_CODE() function with the return value of ck_pr_rtm_begin() as
61     an argument. The return value of CK_PR_RTM_CODE() will be the value of
62     this status byte.  For additional information, please see the Intel
63     instruction set manuals.
64

SEE ALSO

66     ck_pr_fence_load(3), ck_pr_fence_load_depends(3), ck_pr_fence_store(3),
67     ck_pr_fence_memory(3), ck_pr_load(3), ck_pr_store(3), ck_pr_fas(3),
68     ck_pr_faa(3), ck_pr_inc(3), ck_pr_dec(3), ck_pr_neg(3), ck_pr_not(3),
69     ck_pr_sub(3), ck_pr_and(3), ck_pr_or(3), ck_pr_xor(3), ck_pr_add(3),
70     ck_pr_btc(3), ck_pr_bts(3), ck_pr_btr(3)
71
72     Additional information available at http://concurrencykit.org/
73
74                               December 17, 2013
Impressum