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

NAME

rpma_recv - initiate the receive operation

SYNOPSIS

      #include <librpma.h>

      struct rpma_conn;
      struct rpma_mr_local;
      int rpma_recv(struct rpma_conn *conn,
                      struct rpma_mr_local *dst, size_t offset,
                      size_t len, const void *op_context);

DESCRIPTION

rpma_recv() initiates the receive operation which prepares a buffer for a message sent from other side of the connection. Please see rpma_send(3).

All buffers prepared via rpma_recv(3) form an unordered set. When a message arrives it is placed in one of the buffers awaitaning and a completion for the receive operation is generated.

A buffer for an incoming message have to be prepared beforehand.

The order of buffers in the set does not affect the order of completions of receive operations get via rpma_conn_completion_get(3).

The attribute flags set the completion notification indicator:

  • RPMA_F_COMPLETION_ON_ERROR - generate the completion on error

  • RPMA_F_COMPLETION_ALWAYS - generate the completion regardless of result of the operation

NOTE

In the RDMA standard, receive requests form an ordered queue. The RPMA does NOT inherit this guarantee.

RETURN VALUE

The rpma_recv() function returns 0 on success or a negative error code on failure.

ERRORS

rpma_recv() can fail with the following errors:

  • RPMA_E_INVAL - conn or src is NULL

  • RPMA_E_PROVIDER - ibv_post_recv(3) failed

SEE ALSO

rpma_conn_req_connect(3), rpma_mr_reg(3), librpma(7) and https://pmem.io/rpma/

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