NVIDIA DOCA SDK Data Center on a Chip Framework Documentation
dma_copy_core.c File Reference
#include <stdint.h>
#include <string.h>
#include <time.h>
#include <netinet/in.h>
#include <errno.h>
#include <sys/epoll.h>
#include <unistd.h>
#include <doca_buf.h>
#include <doca_buf_inventory.h>
#include <doca_ctx.h>
#include <doca_dev.h>
#include <doca_dma.h>
#include <doca_mmap.h>
#include <samples/common.h>
#include "pack.h"
#include "utils.h"
#include "dma_copy_core.h"
Include dependency graph for dma_copy_core.c:

Go to the source code of this file.

Macros

#define CC_MAX_QUEUE_SIZE   10 /* Max number of messages on Comm Channel queue */
 
#define SLEEP_IN_NANOS   (10 * 1000) /* Sample the task every 10 microseconds */
 
#define STATUS_SUCCESS   true /* Successful status */
 
#define STATUS_FAILURE   false /* Unsuccessful status */
 

Functions

 DOCA_LOG_REGISTER (DMA_COPY_CORE)
 
static doca_error_t get_dma_max_buf_size (struct dma_copy_resources *resources, uint64_t *max_buf_size)
 
static doca_error_t validate_file_size (const char *file_path, uint64_t *file_size)
 
static doca_error_t args_validation_callback (void *config)
 
static doca_error_t dev_pci_addr_callback (void *param, void *config)
 
static doca_error_t file_path_callback (void *param, void *config)
 
static doca_error_t rep_pci_addr_callback (void *param, void *config)
 
static doca_error_t save_buffer_into_a_file (struct dma_copy_cfg *cfg, const char *buffer)
 
static doca_error_t fill_buffer_with_file_content (struct dma_copy_cfg *cfg, char *buffer)
 
static doca_error_t memory_alloc_and_populate (struct doca_mmap *mmap, size_t buffer_len, uint32_t access_flags, char **buffer)
 
static doca_error_t dpu_submit_dma_task (struct dma_copy_cfg *cfg, struct dma_copy_resources *resources, size_t bytes_to_copy, char *buffer, struct doca_buf *local_doca_buf, struct doca_buf *remote_doca_buf, size_t *num_remaining_tasks)
 
static doca_error_t check_dev_dma_capable (struct doca_devinfo *devinfo)
 
doca_error_t register_dma_copy_params (void)
 
doca_error_t open_dma_device (struct doca_dev **dev)
 
static void dma_memcpy_completed_callback (struct doca_dma_task_memcpy *dma_task, union doca_data task_user_data, union doca_data ctx_user_data)
 
static void dma_memcpy_error_callback (struct doca_dma_task_memcpy *dma_task, union doca_data task_user_data, union doca_data ctx_user_data)
 
static doca_error_t destroy_dma_copy_resources (struct dma_copy_resources *resources)
 
static doca_error_t allocate_dma_copy_resources (struct dma_copy_resources *resources)
 
static void send_status_msg (struct doca_comch_connection *comch_connection, bool status)
 
static doca_error_t host_process_dma_direction_and_size (struct dma_copy_cfg *cfg, struct doca_comch_connection *comch_connection, struct comch_msg_dma_direction *dir_msg)
 
void host_recv_event_cb (struct doca_comch_event_msg_recv *event, uint8_t *recv_buffer, uint32_t msg_len, struct doca_comch_connection *comch_connection)
 
static doca_error_t send_file_direction_request (struct dma_copy_cfg *dma_cfg, struct comch_cfg *comch_cfg)
 
doca_error_t host_start_dma_copy (struct dma_copy_cfg *dma_cfg, struct comch_cfg *comch_cfg)
 
static doca_error_t dpu_process_dma_direction_and_size (struct dma_copy_cfg *cfg, struct doca_comch_connection *comch_connection, struct comch_msg_dma_direction *dir_msg)
 
static doca_error_t dpu_process_export_descriptor (struct dma_copy_cfg *cfg, struct comch_msg_dma_export_discriptor *des_msg)
 
void dpu_recv_event_cb (struct doca_comch_event_msg_recv *event, uint8_t *recv_buffer, uint32_t msg_len, struct doca_comch_connection *comch_connection)
 
doca_error_t dpu_start_dma_copy (struct dma_copy_cfg *dma_cfg, struct comch_cfg *comch_cfg)
 

Macro Definition Documentation

◆ CC_MAX_QUEUE_SIZE

#define CC_MAX_QUEUE_SIZE   10 /* Max number of messages on Comm Channel queue */

Definition at line 48 of file dma_copy_core.c.

◆ SLEEP_IN_NANOS

#define SLEEP_IN_NANOS   (10 * 1000) /* Sample the task every 10 microseconds */

Definition at line 49 of file dma_copy_core.c.

◆ STATUS_FAILURE

#define STATUS_FAILURE   false /* Unsuccessful status */

Definition at line 51 of file dma_copy_core.c.

◆ STATUS_SUCCESS

#define STATUS_SUCCESS   true /* Successful status */

Definition at line 50 of file dma_copy_core.c.

Function Documentation

◆ allocate_dma_copy_resources()

static doca_error_t allocate_dma_copy_resources ( struct dma_copy_resources resources)
static

Definition at line 586 of file dma_copy_core.c.

◆ args_validation_callback()

static doca_error_t args_validation_callback ( void *  config)
static

Definition at line 123 of file dma_copy_core.c.

◆ check_dev_dma_capable()

static doca_error_t check_dev_dma_capable ( struct doca_devinfo *  devinfo)
static

Definition at line 415 of file dma_copy_core.c.

◆ destroy_dma_copy_resources()

static doca_error_t destroy_dma_copy_resources ( struct dma_copy_resources resources)
static

Definition at line 556 of file dma_copy_core.c.

◆ dev_pci_addr_callback()

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

Definition at line 142 of file dma_copy_core.c.

◆ dma_memcpy_completed_callback()

static void dma_memcpy_completed_callback ( struct doca_dma_task_memcpy *  dma_task,
union doca_data  task_user_data,
union doca_data  ctx_user_data 
)
static

Definition at line 515 of file dma_copy_core.c.

◆ dma_memcpy_error_callback()

static void dma_memcpy_error_callback ( struct doca_dma_task_memcpy *  dma_task,
union doca_data  task_user_data,
union doca_data  ctx_user_data 
)
static

Definition at line 536 of file dma_copy_core.c.

◆ DOCA_LOG_REGISTER()

DOCA_LOG_REGISTER ( DMA_COPY_CORE  )

◆ dpu_process_dma_direction_and_size()

static doca_error_t dpu_process_dma_direction_and_size ( struct dma_copy_cfg cfg,
struct doca_comch_connection *  comch_connection,
struct comch_msg_dma_direction dir_msg 
)
static

Definition at line 945 of file dma_copy_core.c.

◆ dpu_process_export_descriptor()

static doca_error_t dpu_process_export_descriptor ( struct dma_copy_cfg cfg,
struct comch_msg_dma_export_discriptor des_msg 
)
static

Definition at line 1000 of file dma_copy_core.c.

◆ dpu_recv_event_cb()

void dpu_recv_event_cb ( struct doca_comch_event_msg_recv *  event,
uint8_t *  recv_buffer,
uint32_t  msg_len,
struct doca_comch_connection *  comch_connection 
)

Definition at line 1018 of file dma_copy_core.c.

◆ dpu_start_dma_copy()

doca_error_t dpu_start_dma_copy ( struct dma_copy_cfg dma_cfg,
struct comch_cfg comch_cfg 
)

Definition at line 1116 of file dma_copy_core.c.

◆ dpu_submit_dma_task()

static doca_error_t dpu_submit_dma_task ( struct dma_copy_cfg cfg,
struct dma_copy_resources resources,
size_t  bytes_to_copy,
char *  buffer,
struct doca_buf *  local_doca_buf,
struct doca_buf *  remote_doca_buf,
size_t num_remaining_tasks 
)
static

Definition at line 320 of file dma_copy_core.c.

◆ file_path_callback()

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

Definition at line 165 of file dma_copy_core.c.

◆ fill_buffer_with_file_content()

static doca_error_t fill_buffer_with_file_content ( struct dma_copy_cfg cfg,
char *  buffer 
)
static

Definition at line 241 of file dma_copy_core.c.

◆ get_dma_max_buf_size()

static doca_error_t get_dma_max_buf_size ( struct dma_copy_resources resources,
uint64_t *  max_buf_size 
)
static

Definition at line 62 of file dma_copy_core.c.

◆ host_process_dma_direction_and_size()

static doca_error_t host_process_dma_direction_and_size ( struct dma_copy_cfg cfg,
struct doca_comch_connection *  comch_connection,
struct comch_msg_dma_direction dir_msg 
)
static

Definition at line 684 of file dma_copy_core.c.

◆ host_recv_event_cb()

void host_recv_event_cb ( struct doca_comch_event_msg_recv *  event,
uint8_t *  recv_buffer,
uint32_t  msg_len,
struct doca_comch_connection *  comch_connection 
)

Definition at line 735 of file dma_copy_core.c.

◆ host_start_dma_copy()

doca_error_t host_start_dma_copy ( struct dma_copy_cfg dma_cfg,
struct comch_cfg comch_cfg 
)

Definition at line 840 of file dma_copy_core.c.

◆ memory_alloc_and_populate()

static doca_error_t memory_alloc_and_populate ( struct doca_mmap *  mmap,
size_t  buffer_len,
uint32_t  access_flags,
char **  buffer 
)
static

Definition at line 271 of file dma_copy_core.c.

◆ open_dma_device()

doca_error_t open_dma_device ( struct doca_dev **  dev)

Definition at line 497 of file dma_copy_core.c.

◆ register_dma_copy_params()

doca_error_t register_dma_copy_params ( void  )

Definition at line 420 of file dma_copy_core.c.

◆ rep_pci_addr_callback()

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

Definition at line 188 of file dma_copy_core.c.

◆ save_buffer_into_a_file()

static doca_error_t save_buffer_into_a_file ( struct dma_copy_cfg cfg,
const char *  buffer 
)
static

Definition at line 213 of file dma_copy_core.c.

◆ send_file_direction_request()

static doca_error_t send_file_direction_request ( struct dma_copy_cfg dma_cfg,
struct comch_cfg comch_cfg 
)
static

Definition at line 824 of file dma_copy_core.c.

◆ send_status_msg()

static void send_status_msg ( struct doca_comch_connection *  comch_connection,
bool  status 
)
static

Definition at line 663 of file dma_copy_core.c.

◆ validate_file_size()

static doca_error_t validate_file_size ( const char *  file_path,
uint64_t *  file_size 
)
static

Definition at line 84 of file dma_copy_core.c.