]> git.ipfire.org Git - thirdparty/gcc.git/blob - libitm/doc/the-libitm-abi/library-design-principles.rst
sphinx: add missing trailing newline
[thirdparty/gcc.git] / libitm / doc / the-libitm-abi / library-design-principles.rst
1 ..
2 Copyright 1988-2022 Free Software Foundation, Inc.
3 This is part of the GCC manual.
4 For copying conditions, see the copyright.rst file.
5
6 Library design principles
7 *************************
8
9 [No changes] Calling conventions
10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
11
12 [No changes] TM library algorithms
13 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
14
15 [No changes] Optimized load and store routines
16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
17
18 [No changes] Aligned load and store routines
19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
20
21 Data logging functions
22 ^^^^^^^^^^^^^^^^^^^^^^
23
24 The memory locations accessed with transactional loads and stores and the
25 memory locations whose values are logged must not overlap. This required
26 separation only extends to the scope of the execution of one transaction
27 including all the executions of all nested transactions.
28
29 The compiler must be consistent (within the scope of a single transaction)
30 about which memory locations are shared and which are not shared with other
31 threads (i.e., data must be accessed either transactionally or
32 nontransactionally). Otherwise, non-write-through TM algorithms would not work.
33
34 For memory locations on the stack, this requirement extends to only the
35 lifetime of the stack frame that the memory location belongs to (or the
36 lifetime of the transaction, whichever is shorter). Thus, memory that is
37 reused for several stack frames could be target of both data logging and
38 transactional accesses; however, this is harmless because these stack frames'
39 lifetimes will end before the transaction finishes.
40
41 [No changes] Scatter/gather calls
42 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
43
44 [No changes] Serial and irrevocable mode
45 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
46
47 [No changes] Transaction descriptor
48 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
49
50 Store allocation
51 ^^^^^^^^^^^^^^^^
52
53 There is no ``getTransaction`` function.
54
55 [No changes] Naming conventions
56 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
57
58 Function pointer encryption
59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
60
61 Currently, this is not implemented.