Implementation of RDMA interface defined in lf.h. More...
#include <iostream>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <arpa/inet.h>
#include <byteswap.h>
#include <rdma/fabric.h>
#include <rdma/fi_domain.h>
#include <rdma/fi_cm.h>
#include <rdma/fi_rma.h>
#include <rdma/fi_errno.h>
#include <derecho/conf/conf.hpp>
#include <derecho/utils/logger.hpp>
#include <derecho/core/detail/connection_manager.hpp>
#include <derecho/sst/detail/poll_utils.hpp>
#include <derecho/tcp/tcp.hpp>
#include <derecho/sst/detail/lf.hpp>
#include <derecho/sst/detail/sst_impl.hpp>
Go to the source code of this file.
Classes | |
struct | sst::cm_con_data_t |
Structure to exchange the data needed to connect the Queue Pairs. More... | |
class | sst::lf_ctxt |
Global States. More... | |
Namespaces | |
sst | |
Macros | |
#define | RED "\x1B[31m" |
#define | GRN "\x1B[32m" |
#define | YEL "\x1B[33m" |
#define | BLU "\x1B[34m" |
#define | MAG "\x1B[35m" |
#define | CYN "\x1B[36m" |
#define | WHT "\x1B[37m" |
#define | RESET "\x1B[0m" |
#define | MAX_LF_ADDR_SIZE ((128)-sizeof(uint32_t)-2*sizeof(uint64_t)) |
#define | LF_CONFIG_FILE "rdma.cfg" |
#define | LF_USE_VADDR ((g_ctxt.fi->domain_attr->mr_mode) & (FI_MR_VIRT_ADDR|FI_MR_BASIC)) |
#define | CRASH_WITH_MESSAGE(...) |
Internal Tools. More... | |
#define | FAIL_IF_NONZERO_RETRY_EAGAIN(x, desc, next) |
#define | FAIL_IF_ZERO(x, desc, next) |
#define | LF_RMR_KEY(rid) (((uint64_t)0xf0000000)<<32 | (uint64_t)(rid)) |
#define | LF_WMR_KEY(rid) (((uint64_t)0xf8000000)<<32 | (uint64_t)(rid)) |
Enumerations | |
enum | sst::NextOnFailure { sst::REPORT_ON_FAILURE = 0, sst::CRASH_ON_FAILURE = 1 } |
Functions | |
struct sst::cm_con_data_t | sst::__attribute__ ((packed)) |
bool | sst::add_node (uint32_t new_id, const std::pair< ip_addr_t, uint16_t > &new_ip_addr_and_port) |
Adds a new node to the SST TPC connections set. More... | |
bool | sst::remove_node (uint32_t node_id) |
Removes a node from the SST TCP connections set. More... | |
bool | sst::sync (uint32_t r_id) |
Blocks the current thread until both this node and a remote node reach this function, which exchanges some trivial data over a TCP connection. More... | |
void | sst::polling_loop () |
std::pair< uint32_t, std::pair< int32_t, int32_t > > | sst::lf_poll_completion () |
Polls for completion of a single posted remote write. More... | |
void | sst::lf_initialize (const std::map< uint32_t, std::pair< ip_addr_t, uint16_t >> &ip_addrs_and_ports, uint32_t node_rank) |
Initializes the global libfabric resources. More... | |
void | sst::shutdown_polling_thread () |
Shutdown the polling thread. More... | |
void | sst::lf_destroy () |
Destroys the global libfabric resources. More... | |
Variables | |
uint32_t | pep_addr_len |
char | pep_addr [MAX_LF_ADDR_SIZE] |
uint64_t | mr_key |
uint64_t | vaddr |
std::thread | sst::polling_thread |
tcp::tcp_connections * | sst::sst_connections |
lf_ctxt | sst::g_ctxt |
Implementation of RDMA interface defined in lf.h.
Definition in file lf.cpp.
struct sst::cm_con_data_t |
Structure to exchange the data needed to connect the Queue Pairs.
passive endpoint info to be exchanged.
Class Members | ||
---|---|---|
uint64_t | addr | Buffer address. |
uint8_t | gid[16] | GID. |
uint16_t | lid | LID of the InfiniBand port. |
uint64_t | mr_key | |
char | pep_addr[MAX_LF_ADDR_SIZE] | |
uint32_t | pep_addr_len | |
uint32_t | qp_num | Queue Pair number. |
uint32_t | rkey | Remote key. |
uint64_t | vaddr |
#define CRASH_WITH_MESSAGE | ( | ... | ) |
#define FAIL_IF_NONZERO_RETRY_EAGAIN | ( | x, | |
desc, | |||
next | |||
) |
#define FAIL_IF_ZERO | ( | x, | |
desc, | |||
next | |||
) |
#define LF_RMR_KEY | ( | rid | ) | (((uint64_t)0xf0000000)<<32 | (uint64_t)(rid)) |
#define LF_USE_VADDR ((g_ctxt.fi->domain_attr->mr_mode) & (FI_MR_VIRT_ADDR|FI_MR_BASIC)) |
#define LF_WMR_KEY | ( | rid | ) | (((uint64_t)0xf8000000)<<32 | (uint64_t)(rid)) |
#define MAX_LF_ADDR_SIZE ((128)-sizeof(uint32_t)-2*sizeof(uint64_t)) |
char pep_addr[MAX_LF_ADDR_SIZE] |