NVIDIA DOCA SDK Data Center on a Chip Framework Documentation
urom_rdmo_core.c File Reference
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <stdbool.h>
#include <sched.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <malloc.h>
#include <ucp/api/ucp.h>
#include <doca_argp.h>
#include <doca_ctx.h>
#include <doca_urom.h>
#include <samples/common.h>
#include "urom_rdmo_core.h"
#include "utils.h"
#include "worker_rdmo.h"
Include dependency graph for urom_rdmo_core.c:

Go to the source code of this file.

Data Structures

struct  rbuf_desc
 
struct  client_init_result
 
struct  rq_create_result
 
struct  rq_destroy_result
 
struct  mr_register_result
 
struct  mr_deregister_result
 
struct  rdmo_result
 

Macros

#define _GNU_SOURCE
 
#define FLUSH_ID   0xbeef /* Flush callback id */
 
#define MAX_WORKER_ADDRESS_LEN   1024 /* Maximum address length */
 

Functions

 DOCA_LOG_REGISTER (UROM::RDMO::CORE)
 
static doca_error_t client_exchange (const char *server_name, int port, void *loc_data, size_t loc_datalen, void **rem_data, size_t *rem_datalen)
 
static doca_error_t rdmo_scatter (ucp_worker_h client_ucp_worker, ucp_ep_h client_ucp_ep, uint64_t target, void *data, size_t len, int chunk_size, uint64_t rkey)
 
static doca_error_t rdmo_flush (ucp_worker_h client_ucp_worker, ucp_ep_h client_ucp_ep, int *flushed)
 
static doca_error_t rdmo_append (ucp_worker_h client_ucp_worker, ucp_ep_h client_ucp_ep, uint64_t *ptr_addr, void *data, size_t len, uint64_t rkey)
 
static ucs_status_t rdmo_am_cb (void *arg, const void *header, size_t header_length, void *data, size_t length, const ucp_am_recv_param_t *param)
 
static doca_error_t rdmo_wireup_client (char *server_name, int port, ucp_ep_h *client_ucp_ep, ucp_worker_h *ucp_worker, int *flushed, ucp_context_h *ucp_context_p)
 
static void rdmo_ucp_client_destroy (ucp_ep_h client_ucp_ep, ucp_worker_h ucp_worker, ucp_context_h ucp_context)
 
static void mr_register_finished (doca_error_t result, union doca_data cookie, uint64_t rkey)
 
static doca_error_t server_exchange (int port, void *loc_data, size_t loc_datalen, void **rem_data, size_t *rem_datalen)
 
static doca_error_t rdmo_mr_reg (ucp_worker_h server_ucp_worker, struct doca_urom_worker *worker, struct doca_pe *pe, ucp_context_h ucp_context, void *buf, size_t len, ucp_mem_h *memh, uint64_t *rkey)
 
static void client_init_finished (doca_error_t result, union doca_data cookie, void *addr, uint64_t addr_len)
 
static void rq_create_finished (doca_error_t result, union doca_data cookie, uint64_t rq_id)
 
static void rq_destroy_finished (doca_error_t result, union doca_data cookie, uint64_t rq_id)
 
static void mr_deregister_finished (doca_error_t result, union doca_data cookie, uint64_t rkey)
 
static doca_error_t rdmo_deregister_mr (struct doca_urom_worker *worker, struct doca_pe *pe, uint64_t rkey)
 
static doca_error_t rdmo_destroy_rq (struct doca_urom_worker *worker, struct doca_pe *pe, uint64_t rq_id)
 
static doca_error_t rdmo_wireup_server (struct doca_urom_worker *worker, struct doca_pe *pe, int port, ucp_context_h *ucp_context, ucp_worker_h *server_ucp_worker, uint64_t *rq_id)
 
static doca_error_t rdmo_server_urom_init (char *device_name, struct doca_pe **pe, struct doca_urom_service **service, struct doca_urom_worker **worker, struct doca_dev **dev)
 
static doca_error_t rdmo_server_urom_destroy (struct doca_pe *pe, struct doca_urom_service *service, struct doca_urom_worker *worker, struct doca_dev *dev)
 
static doca_error_t cs_barrier (const char *server_name, int port, enum rdmo_mode mode)
 
static doca_error_t mode_callback (void *param, void *config)
 
static doca_error_t server_address_callback (void *param, void *config)
 
doca_error_t rdmo_server (char *device_name)
 
doca_error_t rdmo_client (char *server_name)
 
doca_error_t register_urom_rdmo_params (void)
 

Macro Definition Documentation

◆ _GNU_SOURCE

#define _GNU_SOURCE

Definition at line 27 of file urom_rdmo_core.c.

◆ FLUSH_ID

#define FLUSH_ID   0xbeef /* Flush callback id */

Definition at line 54 of file urom_rdmo_core.c.

◆ MAX_WORKER_ADDRESS_LEN

#define MAX_WORKER_ADDRESS_LEN   1024 /* Maximum address length */

Definition at line 55 of file urom_rdmo_core.c.

Function Documentation

◆ client_exchange()

static doca_error_t client_exchange ( const char *  server_name,
int  port,
void *  loc_data,
size_t  loc_datalen,
void **  rem_data,
size_t rem_datalen 
)
static

Definition at line 115 of file urom_rdmo_core.c.

◆ client_init_finished()

static void client_init_finished ( doca_error_t  result,
union doca_data  cookie,
void *  addr,
uint64_t  addr_len 
)
static

Definition at line 889 of file urom_rdmo_core.c.

◆ cs_barrier()

static doca_error_t cs_barrier ( const char *  server_name,
int  port,
enum rdmo_mode  mode 
)
static

Definition at line 1379 of file urom_rdmo_core.c.

◆ DOCA_LOG_REGISTER()

DOCA_LOG_REGISTER ( UROM::RDMO::CORE  )

◆ mode_callback()

static doca_error_t mode_callback ( void *  param,
void *  config 
)
static

Definition at line 1396 of file urom_rdmo_core.c.

◆ mr_deregister_finished()

static void mr_deregister_finished ( doca_error_t  result,
union doca_data  cookie,
uint64_t  rkey 
)
static

Definition at line 958 of file urom_rdmo_core.c.

◆ mr_register_finished()

static void mr_register_finished ( doca_error_t  result,
union doca_data  cookie,
uint64_t  rkey 
)
static

Definition at line 634 of file urom_rdmo_core.c.

◆ rdmo_am_cb()

static ucs_status_t rdmo_am_cb ( void *  arg,
const void *  header,
size_t  header_length,
void *  data,
size_t  length,
const ucp_am_recv_param_t *  param 
)
static

Definition at line 421 of file urom_rdmo_core.c.

◆ rdmo_append()

static doca_error_t rdmo_append ( ucp_worker_h  client_ucp_worker,
ucp_ep_h  client_ucp_ep,
uint64_t *  ptr_addr,
void *  data,
size_t  len,
uint64_t  rkey 
)
static

Definition at line 359 of file urom_rdmo_core.c.

◆ rdmo_client()

doca_error_t rdmo_client ( char *  server_name)

Definition at line 1584 of file urom_rdmo_core.c.

◆ rdmo_deregister_mr()

static doca_error_t rdmo_deregister_mr ( struct doca_urom_worker *  worker,
struct doca_pe *  pe,
uint64_t  rkey 
)
static

Definition at line 980 of file urom_rdmo_core.c.

◆ rdmo_destroy_rq()

static doca_error_t rdmo_destroy_rq ( struct doca_urom_worker *  worker,
struct doca_pe *  pe,
uint64_t  rq_id 
)
static

Definition at line 1018 of file urom_rdmo_core.c.

◆ rdmo_flush()

static doca_error_t rdmo_flush ( ucp_worker_h  client_ucp_worker,
ucp_ep_h  client_ucp_ep,
int *  flushed 
)
static

Definition at line 299 of file urom_rdmo_core.c.

◆ rdmo_mr_reg()

static doca_error_t rdmo_mr_reg ( ucp_worker_h  server_ucp_worker,
struct doca_urom_worker *  worker,
struct doca_pe *  pe,
ucp_context_h  ucp_context,
void *  buf,
size_t  len,
ucp_mem_h *  memh,
uint64_t *  rkey 
)
static

Definition at line 774 of file urom_rdmo_core.c.

◆ rdmo_scatter()

static doca_error_t rdmo_scatter ( ucp_worker_h  client_ucp_worker,
ucp_ep_h  client_ucp_ep,
uint64_t  target,
void *  data,
size_t  len,
int  chunk_size,
uint64_t  rkey 
)
static

Definition at line 222 of file urom_rdmo_core.c.

◆ rdmo_server()

doca_error_t rdmo_server ( char *  device_name)

Definition at line 1442 of file urom_rdmo_core.c.

◆ rdmo_server_urom_destroy()

static doca_error_t rdmo_server_urom_destroy ( struct doca_pe *  pe,
struct doca_urom_service *  service,
struct doca_urom_worker *  worker,
struct doca_dev *  dev 
)
static

Definition at line 1312 of file urom_rdmo_core.c.

◆ rdmo_server_urom_init()

static doca_error_t rdmo_server_urom_init ( char *  device_name,
struct doca_pe **  pe,
struct doca_urom_service **  service,
struct doca_urom_worker **  worker,
struct doca_dev **  dev 
)
static

Definition at line 1205 of file urom_rdmo_core.c.

◆ rdmo_ucp_client_destroy()

static void rdmo_ucp_client_destroy ( ucp_ep_h  client_ucp_ep,
ucp_worker_h  ucp_worker,
ucp_context_h  ucp_context 
)
static

Definition at line 599 of file urom_rdmo_core.c.

◆ rdmo_wireup_client()

static doca_error_t rdmo_wireup_client ( char *  server_name,
int  port,
ucp_ep_h *  client_ucp_ep,
ucp_worker_h *  ucp_worker,
int *  flushed,
ucp_context_h *  ucp_context_p 
)
static

Definition at line 456 of file urom_rdmo_core.c.

◆ rdmo_wireup_server()

static doca_error_t rdmo_wireup_server ( struct doca_urom_worker *  worker,
struct doca_pe *  pe,
int  port,
ucp_context_h *  ucp_context,
ucp_worker_h *  server_ucp_worker,
uint64_t *  rq_id 
)
static

Definition at line 1059 of file urom_rdmo_core.c.

◆ register_urom_rdmo_params()

doca_error_t register_urom_rdmo_params ( void  )

Definition at line 1686 of file urom_rdmo_core.c.

◆ rq_create_finished()

static void rq_create_finished ( doca_error_t  result,
union doca_data  cookie,
uint64_t  rq_id 
)
static

Definition at line 916 of file urom_rdmo_core.c.

◆ rq_destroy_finished()

static void rq_destroy_finished ( doca_error_t  result,
union doca_data  cookie,
uint64_t  rq_id 
)
static

Definition at line 937 of file urom_rdmo_core.c.

◆ server_address_callback()

static doca_error_t server_address_callback ( void *  param,
void *  config 
)
static

Definition at line 1423 of file urom_rdmo_core.c.

◆ server_exchange()

static doca_error_t server_exchange ( int  port,
void *  loc_data,
size_t  loc_datalen,
void **  rem_data,
size_t rem_datalen 
)
static

Definition at line 658 of file urom_rdmo_core.c.