1ck_pr_rtm(3) BSD Library Functions Manual ck_pr_rtm(3)
2
4 ck_pr_rtm_begin, ck_pr_rtm_end, ck_pr_rtm_abort, ck_pr_rtm_test —
5 restricted transactional memory
6
8 Concurrency Kit (libck, -lck)
9
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
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
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