Feature #1667: Direct API for nocopy operations on sender-side and receiver-side
Direct API - Support multiple user operation modes
There are four user operation modes that need to be supported in this feature. These modes can be passed into CkNcpySource or CkNcpyDestination objects and determine the behavior of the underlying operation of the RTS.
CK_BUFFER_UNREG is the default mode that is used when the user doesn't pass any specific mode. CK_BUFFER_UNREG doesn't register the buffer and avoids non-network registration.
CK_BUFFER_REG registers the buffer by treating network & non-network transfers in the same way and avoids an extra small message to register, as done in the case of CK_BUFFER_UNREG.
CK_BUFFER_NOREG is to simply store the information about a remote buffer without its machine specific information. CK_BUFFER_NOREG finds its use case in AMPI.
CK_BUFFER_PREREG is a mode that is to be supported in the future. It is intended to allow users to pass already registered buffers allocated from a pre-registered pool using CmiAlloc.