NAME¶
rpma_mr_reg - create a local memory registration object
SYNOPSIS¶
#include <librpma.h>
struct rpma_peer;
struct rpma_mr_local;
int rpma_mr_reg(struct rpma_peer *peer, void *ptr, size_t size,
int usage, struct rpma_mr_local **mr_ptr);
DESCRIPTION¶
rpma_mr_reg() registers a memory region and creates a local memory
registration object. The usage parameter specifies the operations that can be
performed on the given memory region which should be expressed as
bitwise-inclusive OR of the following:
- RPMA_MR_USAGE_READ_SRC - memory used as a source of the read
operation
- RPMA_MR_USAGE_READ_DST - memory used as a destination of the read
operation
- RPMA_MR_USAGE_WRITE_SRC - memory used as a source of the write
operation
- RPMA_MR_USAGE_WRITE_DST - memory used as a destination of the write
operation
- RPMA_MR_USAGE_FLUSH_TYPE_VISIBILITY - memory with available flush
operation
- RPMA_MR_USAGE_FLUSH_TYPE_PERSISTENT - memory with available persistent
flush operation
- RPMA_MR_USAGE_SEND - memory used for send operation
- RPMA_MR_USAGE_RECV - memory used for receive operation
RETURN VALUE¶
The rpma_mr_reg() function returns 0 on success or a negative error code
on failure. rpma_mr_reg() does not set *mr_ptr value on failure.
ERRORS¶
rpma_mr_reg() can fail with the following errors:
- RPMA_E_INVAL - peer or ptr or mr_ptr is NULL
- RPMA_E_INVAL - size equals 0
- RPMA_E_NOMEM - out of memory
- RPMA_E_PROVIDER - memory registration failed
SEE ALSO¶
rpma_conn_req_recv(3), rpma_mr_dereg(3),
rpma_mr_get_descriptor(3), rpma_mr_get_descriptor_size(3),
rpma_peer_new(3), rpma_read(3), rpma_recv(3),
rpma_send(3), rpma_write(3), rpma_write_atomic(3),
librpma(7) and https://pmem.io/rpma/