librpma API version 0.9.0

librpma.7 rpma_conn_apply_remote_peer_cfg.3 rpma_conn_cfg_delete.3 rpma_conn_cfg_get_cq_size.3 rpma_conn_cfg_get_rq_size.3 rpma_conn_cfg_get_sq_size.3 rpma_conn_cfg_get_timeout.3 rpma_conn_cfg_new.3 rpma_conn_cfg_set_cq_size.3 rpma_conn_cfg_set_rq_size.3 rpma_conn_cfg_set_sq_size.3 rpma_conn_cfg_set_timeout.3 rpma_conn_completion_get.3 rpma_conn_completion_wait.3 rpma_conn_delete.3 rpma_conn_disconnect.3 rpma_conn_get_completion_fd.3 rpma_conn_get_event_fd.3 rpma_conn_get_private_data.3 rpma_conn_next_event.3 rpma_conn_req_connect.3 rpma_conn_req_delete.3 rpma_conn_req_new.3 rpma_conn_req_recv.3 rpma_ep_get_fd.3 rpma_ep_listen.3 rpma_ep_next_conn_req.3 rpma_ep_shutdown.3 rpma_err_2str.3 rpma_flush.3 rpma_log_get_threshold.3 rpma_log_set_function.3 rpma_log_set_threshold.3 rpma_mr_dereg.3 rpma_mr_get_descriptor.3 rpma_mr_get_descriptor_size.3 rpma_mr_reg.3 rpma_mr_remote_delete.3 rpma_mr_remote_from_descriptor.3 rpma_mr_remote_get_flush_type.3 rpma_mr_remote_get_size.3 rpma_peer_cfg_delete.3 rpma_peer_cfg_from_descriptor.3 rpma_peer_cfg_get_descriptor.3 rpma_peer_cfg_get_descriptor_size.3 rpma_peer_cfg_get_direct_write_to_pmem.3 rpma_peer_cfg_new.3 rpma_peer_cfg_set_direct_write_to_pmem.3 rpma_peer_delete.3 rpma_peer_new.3 rpma_read.3 rpma_recv.3 rpma_send.3 rpma_utils_conn_event_2str.3 rpma_utils_get_ibv_context.3 rpma_utils_ibv_context_is_odp_capable.3 rpma_write.3 rpma_write_atomic.3


rpma_mr_reg - create a local memory registration object


      #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);


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


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.


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


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

The contents of this web site and the associated GitHub repositories are BSD-licensed open source.