1dat_lmr_sync_rdma_wrDiitree(c3tDAATc)cess Transport LibrarydaFtu_nlcmtri_osnysnc_rdma_write(3DAT)
2
3
4

NAME

6       dat_lmr_sync_rdma_write  -  synchronize local memory with RDMA write on
7       non-coherent memory
8

SYNOPSIS

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

PARAMETERS

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

DESCRIPTION

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

RETURN VALUES

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

USAGE

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

ATTRIBUTES

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

SEE ALSO

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)
Impressum