librpma API version 1.3.0

librpma.7 rpma_atomic_write.3 rpma_conn_apply_remote_peer_cfg.3 rpma_conn_cfg_delete.3 rpma_conn_cfg_get_compl_channel.3 rpma_conn_cfg_get_cq_size.3 rpma_conn_cfg_get_rcq_size.3 rpma_conn_cfg_get_rq_size.3 rpma_conn_cfg_get_sq_size.3 rpma_conn_cfg_get_srq.3 rpma_conn_cfg_get_timeout.3 rpma_conn_cfg_new.3 rpma_conn_cfg_set_compl_channel.3 rpma_conn_cfg_set_cq_size.3 rpma_conn_cfg_set_rcq_size.3 rpma_conn_cfg_set_rq_size.3 rpma_conn_cfg_set_sq_size.3 rpma_conn_cfg_set_srq.3 rpma_conn_cfg_set_timeout.3 rpma_conn_delete.3 rpma_conn_disconnect.3 rpma_conn_get_compl_fd.3 rpma_conn_get_cq.3 rpma_conn_get_event_fd.3 rpma_conn_get_private_data.3 rpma_conn_get_qp_num.3 rpma_conn_get_rcq.3 rpma_conn_next_event.3 rpma_conn_req_connect.3 rpma_conn_req_delete.3 rpma_conn_req_get_private_data.3 rpma_conn_req_new.3 rpma_conn_req_recv.3 rpma_conn_wait.3 rpma_cq_get_fd.3 rpma_cq_get_wc.3 rpma_cq_wait.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_advise.3 rpma_mr_dereg.3 rpma_mr_get_descriptor.3 rpma_mr_get_descriptor_size.3 rpma_mr_get_ptr.3 rpma_mr_get_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_send_with_imm.3 rpma_srq_cfg_delete.3 rpma_srq_cfg_get_rcq_size.3 rpma_srq_cfg_get_rq_size.3 rpma_srq_cfg_new.3 rpma_srq_cfg_set_rcq_size.3 rpma_srq_cfg_set_rq_size.3 rpma_srq_delete.3 rpma_srq_get_rcq.3 rpma_srq_new.3 rpma_srq_recv.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_with_imm.3

NAME

rpma_mr_remote_from_descriptor - create a memory region from a descriptor

SYNOPSIS

      #include <librpma.h>

      struct rpma_mr_remote;
      int rpma_mr_remote_from_descriptor(const void *desc, size_t desc_size,
                      struct rpma_mr_remote **mr_ptr);

DESCRIPTION

Create a remote memory region's structure based on the provided descriptor with a network-transferable description of the memory region local to the remote peer.

SECURITY WARNING

An attacker might modify the serialized remote memory registration configuration while it is transferred via an unsecured connection (e.g. rdma_cm private data), which might cause data corruption when writing to a different location. Users should avoid using rpma_conn_get_private_data(3) and rpma_conn_req_get_private_data(3) API calls and they should utilize TLS/SSL connections to transfer all configuration data between peers instead.

RETURN VALUE

The rpma_mr_remote_from_descriptor() function returns 0 on success or a negative error code on failure. rpma_mr_remote_from_descriptor() does not set *mr_ptr value on failure.

ERRORS

rpma_mr_remote_from_descriptor() can fail with the following errors:

  • RPMA_E_INVAL - desc or mr_ptr is NULL

  • RPMA_E_INVAL - incompatible descriptor size

  • RPMA_E_NOSUPP - deserialized information does not represent a valid memory region

  • RPMA_E_NOMEM - out of memory

SEE ALSO

rpma_mr_remote_delete(3), rpma_mr_remote_get_flush_type(3), rpma_mr_remote_get_size(3), rpma_flush(3), rpma_read(3), rpma_write(3), rpma_atomic_write(3), librpma(7) and https://pmem.io/rpma/

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