#include <atomic>#include <cstring>#include <fcntl.h>#include <iostream>#include <list>#include <mutex>#include <poll.h>#include <thread>#include <vector>#include <arpa/inet.h>#include <byteswap.h>#include <rdma/fabric.h>#include <rdma/fi_cm.h>#include <rdma/fi_tagged.h>#include <rdma/fi_rma.h>#include <rdma/fi_endpoint.h>#include <rdma/fi_domain.h>#include <derecho/conf/conf.hpp>#include <derecho/core/detail/connection_manager.hpp>#include <derecho/rdmc/detail/lf_helper.hpp>#include <derecho/tcp/tcp.hpp>#include <derecho/rdmc/detail/util.hpp>#include <derecho/utils/logger.hpp>
Go to the source code of this file.
Classes | |
| struct | rdma::cm_con_data_t |
| struct | rdma::completion_handler_set |
| Listener to detect new incoming connections. More... | |
| struct | rdma::lf_ctxt |
| Global states. More... | |
| struct | rdma::task::task_impl |
Namespaces | |
| rdma | |
| Contains functions and classes for low-level RDMA operations, such as setting up memory regions and queue pairs. | |
| rdma::impl | |
Macros | |
| #define | CRASH_WITH_MESSAGE(...) |
| #define | FAIL_IF_NONZERO_RETRY_EAGAIN(x, desc, next) |
| #define | FAIL_IF_ZERO(x, desc, next) |
| #define | MAX_LF_ADDR_SIZE ((128)-sizeof(uint32_t)-2*sizeof(uint64_t)) |
| Passive endpoint info to be exchange. More... | |
| #define | LF_USE_VADDR ((g_ctxt.fi->domain_attr->mr_mode) & (FI_MR_VIRT_ADDR | FI_MR_BASIC)) |
| #define | LF_CONFIG_FILE "rdma.cfg" |
| #define | OP_BITS_SHIFT (48) |
| #define | OP_BITS_MASK (0x00ff000000000000ull) |
| #define | EXTRACT_RDMA_OP_CODE(x) ((uint8_t)((((uint64_t)x) & OP_BITS_MASK) >> OP_BITS_SHIFT)) |
Enumerations | |
| enum | rdma::NextOnFailure { rdma::REPORT_ON_FAILURE = 0, rdma::CRASH_ON_FAILURE = 1 } |
| Testing tools from Weijia's sst code. More... | |
| enum | rdma::RDMAOps { rdma::RDMA_OP_SEND = 1, rdma::RDMA_OP_RECV, rdma::RDMA_OP_WRITE } |
Functions | |
| struct rdma::cm_con_data_t | rdma::__attribute__ ((packed)) |
| bool | rdma::sync (uint32_t r_id) |
| bool | rdma::impl::lf_add_connection (uint32_t new_id, const std::pair< ip_addr_t, uint16_t > &new_ip_addr_and_port) |
| Adds a node to the group via tcp. More... | |
| bool | rdma::impl::lf_remove_connection (uint32_t node_id) |
| Removes a node's TCP connection, presumably because it has failed. More... | |
| bool | rdma::impl::lf_initialize (const std::map< node_id_t, std::pair< ip_addr_t, uint16_t >> &ip_addrs_and_ports, uint32_t node_rank) |
| Initialize the global context. More... | |
| bool | rdma::impl::lf_destroy () |
| std::map< uint32_t, remote_memory_region > | rdma::impl::lf_exchange_memory_regions (const std::vector< uint32_t > &members, uint32_t node_rank, const memory_region &mr) |
| bool | rdma::impl::set_interrupt_mode (bool enabled) |
Variables | |
| uint32_t | pep_addr_len |
| char | pep_addr [MAX_LF_ADDR_SIZE] |
| local endpoint address length More... | |
| tcp::tcp_connections * | rdma::rdmc_connections |
| Object to hold the tcp connections for every node. More... | |
| struct rdma::completion_handler_set | rdma::__attribute__ |
| struct lf_ctxt | rdma::g_ctxt |
| The global context for libfabric. More... | |
| struct rdma::cm_con_data_t |
Definition at line 86 of file lf_helper.cpp.
| Class Members | ||
|---|---|---|
| uint8_t | gid[16] | |
| uint16_t | lid | |
| char | pep_addr[MAX_LF_ADDR_SIZE] | local endpoint address length |
| uint32_t | pep_addr_len | |
| uint32_t | qp_num | |
| struct rdma::completion_handler_set |
Listener to detect new incoming connections.
Vector of completion handlers and a mutex for accessing it
Definition at line 104 of file lf_helper.cpp.

| Class Members | ||
|---|---|---|
| string | name | |
| completion_handler | recv | |
| completion_handler | send | |
| completion_handler | write | |
| struct rdma::lf_ctxt |
Global states.
Definition at line 116 of file lf_helper.cpp.
| Class Members | ||
|---|---|---|
| struct fid_cq * | cq | event queue for connection management |
| struct fi_cq_attr | cq_attr | event queue attributes |
| struct fid_domain * | domain | fabric handle |
| struct fi_eq_attr | eq_attr | local pep address |
| struct fid_fabric * | fabric | fabric information |
| struct fi_info * | fi | hints |
| struct fi_info * | hints | |
| struct fid_pep * | pep | domain handle |
| char | pep_addr[MAX_LF_ADDR_SIZE] | length of local pep address |
| size_t | pep_addr_len | completion queue for all rma operations |
| struct fid_eq * | peq | passive endpoint for receiving connection |
| struct rdma::task::task_impl |
Definition at line 533 of file lf_helper.cpp.
| Class Members | ||
|---|---|---|
| int | dummy | |
| #define CRASH_WITH_MESSAGE | ( | ... | ) |
Definition at line 42 of file lf_helper.cpp.
| #define EXTRACT_RDMA_OP_CODE | ( | x | ) | ((uint8_t)((((uint64_t)x) & OP_BITS_MASK) >> OP_BITS_SHIFT)) |
Definition at line 143 of file lf_helper.cpp.
| #define FAIL_IF_NONZERO_RETRY_EAGAIN | ( | x, | |
| desc, | |||
| next | |||
| ) |
Definition at line 54 of file lf_helper.cpp.
| #define FAIL_IF_ZERO | ( | x, | |
| desc, | |||
| next | |||
| ) |
Definition at line 69 of file lf_helper.cpp.
| #define LF_CONFIG_FILE "rdma.cfg" |
Definition at line 134 of file lf_helper.cpp.
| #define LF_USE_VADDR ((g_ctxt.fi->domain_attr->mr_mode) & (FI_MR_VIRT_ADDR | FI_MR_BASIC)) |
Definition at line 133 of file lf_helper.cpp.
| #define MAX_LF_ADDR_SIZE ((128)-sizeof(uint32_t)-2*sizeof(uint64_t)) |
Passive endpoint info to be exchange.
Definition at line 85 of file lf_helper.cpp.
| #define OP_BITS_MASK (0x00ff000000000000ull) |
Definition at line 142 of file lf_helper.cpp.
| #define OP_BITS_SHIFT (48) |
Definition at line 141 of file lf_helper.cpp.
| char pep_addr[MAX_LF_ADDR_SIZE] |
local endpoint address length
Definition at line 31 of file lf_helper.cpp.
| uint32_t pep_addr_len |
Definition at line 30 of file lf_helper.cpp.
1.8.13