1dat_lmr_sync_rdma_wrDiitree(c3tDAATc)cess Transport LibrarydaFtu_nlcmtri_osnysnc_rdma_write(3DAT)
2
3
4
6 dat_lmr_sync_rdma_write - synchronize local memory with RDMA write on
7 non-coherent memory
8
10 cc [ flag... ] file... -ldat [ library... ]
11 #include <dat/udat.h>
12
13 DAT_RETURN
14 dat_lmr_sync_rdma_write (
15 IN DAT_IA_HANDLE ia_handle,
16 IN const DAT_LMR_TRIPLET *local_segments,
17 IN DAT_VLEN num_segments
18 )
19
20
22 ia_handle A handle for an open instance of the IA.
23
24
25 local_segments An array of buffer segments.
26
27
28 num_segments The number of segments in the local_segments argu‐
29 ment.
30
31
33 The dat_lmr_sync_rdma_write() function makes effects of an incoming
34 RDMA Write operation visible to the Consumer. This operation guarantees
35 consistency by locally invalidating the non-coherent cache whose buffer
36 has been populated by remote peer RDMA write operations.
37
38
39 The dat_lmr_sync_rdma_write() function is needed if and only if the
40 Provider attribute specifies that this operation is needed after an
41 incoming RDMA Write operation. The Consumer must call
42 dat_lmr_sync_rdma_write() before reading data from a memory range in
43 this region that was the target of an incoming RDMA Write operation.
44 The dat_lmr_sync_rdma_write() function must be called after the RDMA
45 Write operation completes, and the memory range that was modified by
46 the RDMA Write must be supplied by the caller in the local_ segments
47 array. After this call returns, the Consumer may safely see the modi‐
48 fied contents of the memory range. It is permissible to batch synchro‐
49 nizations of multiple RDMA Write operations in a single call by passing
50 a local_segments array that includes all modified memory ranges. The
51 local_segments entries need not contain the same LMR and need not be in
52 the same Protection Zone.
53
54
55 The Consumer must also use dat_lmr_sync_rdma_write() when performing
56 local writes to a memory range that was or will be the target of incom‐
57 ing RDMA writes. After performing the local write, the Consumer must
58 call dat_lmr_sync_rdma_write() before the RDMA Write is initiated.
59 Conversely, after an RDMA Write completes, the Consumer must call
60 dat_lmr_sync_rdma_write() before performing a local write to the same
61 range.
62
63
64 If the Provider attribute specifies that this operation is needed and
65 the Consumer attempts to read from a memory range in an LMR without
66 properly synchronizing using dat_lmr_sync_rdma_write(), the returned
67 contents are undefined. If the Consumer attempts to write to a memory
68 range without properly synchronizing, the contents of the memory range
69 become undefined.
70
72 DAT_SUCCESS The operation was successful.
73
74
75 DAT_INVALID_HANDLE The DAT handle is invalid.
76
77
78 DAT_INVALID_PARAMETER One of the parameters is invalid. For example,
79 the address range for a local segment fell
80 outside the boundaries of the corresponding
81 Local Memory Region or the LMR handle was
82 invalid.
83
84
86 Determining when an RDMA Write completes and determining which memory
87 range was modified is the Consumer's responsibility. One possibility is
88 for the RDMA Write initiator to post a Send DTO message after each RDMA
89 Write that identifies the range in the body of the Send. The Consumer
90 at the target of the RDMA Write can receive the message and know when
91 and how to call dat_lmr_sync_rdma_write().
92
93
94 This call ensures that the Provider receives a coherent view of the
95 buffer contents after a subsequent remote RDMA Write operation. After
96 the call completes, the Consumer can be assured that all platform-spe‐
97 cific buffer and cache updates have been performed, and that the LMR
98 range has consistency with the Provider hardware. Any subsequent read
99 by the Consumer can void this consistency. The Provider is not required
100 to detect such access.
101
102
103 The action performed on the cache before the RDMA Write depends on the
104 cache type:
105
106 o I/O noncoherent cache will be flushed.
107
108 o CPU noncoherent cache will be invalidated.
109
111 See attributes(5) for descriptions of the following attributes:
112
113
114
115
116 ┌─────────────────────────────┬─────────────────────────────┐
117 │ ATTRIBUTE TYPE │ ATTRIBUTE VALUE │
118 ├─────────────────────────────┼─────────────────────────────┤
119 │Interface Stability │Standard: uDAPL, 1.2 │
120 ├─────────────────────────────┼─────────────────────────────┤
121 │MT-Level │Unsafe │
122 └─────────────────────────────┴─────────────────────────────┘
123
125 dat_lmr_sync_rdma_read(3DAT), libdat(3LIB), attributes(5)
126
127
128
129SunOS 5.11 16 Jul 2004 dat_lmr_sync_rdma_write(3DAT)