3.1.4.3 Register Buffer

When the upper layer prepares a local buffer as the source or destination of a peer RDMA Read or RDMA Write operation, it passes:

  • The implementation-defined representation of the Connection.

  • The buffer to be registered

  • A flag indicating whether the buffer is to be registered for RDMA Read and/or RDMA Write operations.

The registration MUST use implementation-specific means to register the memory locations indicated by the buffer with the underlying RDMA provider, enabling only the permissions appropriate for the RDMA Read or RDMA Write indication provided, on the specified Connection. If the local implementation requires multiple registrations--for example if the memory locations indicated by buffer are discontiguous or if the size exceeds provider-supported limits-- multiple such registrations can be performed. If the RDMA provider indicates an error for any registration, the error result MUST be provided to the upper layer and the memory locations indicated by the buffer SHOULD NOT remain enabled for remote access.

If all registration succeeds, an array of one or more Buffer Descriptor V1 structures MUST be built, where each element contains the RDMA provider-specific Offset, Token, and Length fields of each registered segment in sequential order, and where the entire array describes remote access to each memory location in the provided buffer.