Direct Access Transport Library Functions
datlmrsyncrdmaread(3DAT)
NAME
datlmrsyncrdmaread - synchronize local memory with RDMA
read on non-coherent memory
SYNOPSIS
cc [ flag... ] file... -ldat [ library... ]
#include
DATRETURN
datlmrsyncrdmaread (
IN DATIAHANDLE iahandle,
IN const DATLMRTRIPLET *localsegments,
IN DATVLEN numsegments
)
PARAMETERS
iahandle A handle for an open instance of the IA.
localsegments An array of buffer segments.
numsegments The number of segments in the
localsegments argument.
DESCRIPTION
The datlmrsyncrdmaread() function makes memory changes
visible to an incoming RDMA Read operation. This operation
guarantees consistency by locally flushing the non-coherent
cache prior to it being retrieved by remote peer RDMA read
operations.
The datlmrsyncrdmaread() function is needed if and only
if the Provider attribute specifies that this operation is
needed prior to an incoming RDMA Read operation. The Consu-
mer must call datlmrsyncrdmaread() after modifying data
in a memory range in this region that will be the target of
an incoming RDMA Read operation. The
datlmrsyncrdmaread() function must be called after the
Consumer has modified the memory range but before the RDMA
Read operation begins. The memory range that will be
accessed by the RDMA read operation must be supplied by the
caller in the localsegments array. After this call returns,
the RDMA Read operation can safely see the modified contents
of the memory range. It is permissible to batch synchroniza-
tions for multiple RDMA Read operations in a single call by
passing a localsegments array that includes all modified
memory ranges. The localsegments entries need not contain
SunOS 5.11 Last change: 16 Jul 2004 1
Direct Access Transport Library Functions
datlmrsyncrdmaread(3DAT)
the same LMR and need not be in the same Protection Zone.
If the Provider attribute specifying that this operation is
required attempts to read from a memory range that is not
properly synchronized using datlmrsyncrdmaread(), the
returned contents are undefined.
RETURN VALUES
DATSUCES The operation was successful.
DATINVALIDHANDLE The DAT handle is invalid.
DATINVALIDPARAMETER One of the parameters is invalid.
For example, the address range for
a local segment fell outside the
boundaries of the corresponding
Local Memory Region or the LMR han-
dle was invalid.
USAGE
Determining when an RDMA Read will start and what memory
range it will read is the Consumer's responsibility. One
possibility is to have the Consumer that is modifying memory
call datlmrsyncrdmaread() and then post a Send DTO mes-
sage that identifies the range in the body of the Send. The
Consumer wanting to perform the RDMA Read can receive this
message and know when it is safe to initiate the RDMA Read
operation.
This call ensures that the Provider receives a coherent view
of the buffer contents upon a subsequent remote RDMA Read
operation. After the call completes, the Consumer can be
assured that all platform-specific buffer and cache updates
have been performed, and that the LMR range has consistency
with the Provider hardware. Any subsequent write by the Con-
sumer can void this consistency. The Provider is not
required to detect such access.
The action performed on the cache before the RDMA Read
depends on the cache type:
o I/O noncoherent cache will be invalidated.
o CPU noncoherent cache will be flushed.
SunOS 5.11 Last change: 16 Jul 2004 2
Direct Access Transport Library Functions
datlmrsyncrdmaread(3DAT)
ATRIBUTES
See attributes(5) for descriptions of the following attri-
butes:
ATRIBUTE TYPE ATRIBUTE VALUE
Interface Stability Standard: uDAPL, 1.2
MT-Level Unsafe
SEE ALSO
datlmrsyncrdmawrite(3DAT), libdat(3LIB), attributes(5)
SunOS 5.11 Last change: 16 Jul 2004 3
Direct Access Transport Library Functions
datlmrsyncrdmaread(3DAT)
SunOS 5.11 Last change: 16 Jul 2004 4
|