NVIDIA DOCA SDK Data Center on a Chip Framework Documentation
doca_dma.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2022-2024 NVIDIA CORPORATION & AFFILIATES, ALL RIGHTS RESERVED.
3  *
4  * This software product is a proprietary product of NVIDIA CORPORATION &
5  * AFFILIATES (the "Company") and all right, title, and interest in and to the
6  * software product, including all associated intellectual property rights, are
7  * and shall remain exclusively with the Company.
8  *
9  * This software product is governed by the End User License Agreement
10  * provided with the software product.
11  *
12  */
13 
22 #ifndef DOCA_DMA_H_
23 #define DOCA_DMA_H_
24 
25 #include <inttypes.h>
26 
27 #include <doca_compat.h>
28 #include <doca_error.h>
29 #include <doca_types.h>
30 
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
34 
35 /**********************************************************************************************************************
36  * DOCA core opaque types
37  *********************************************************************************************************************/
38 
39 struct doca_buf;
40 struct doca_ctx;
41 struct doca_dev;
42 struct doca_devinfo;
43 struct doca_gpu_dma;
44 
51 struct doca_dma_task_memcpy;
52 
77 typedef void (*doca_dma_task_memcpy_completion_cb_t)(struct doca_dma_task_memcpy *task,
78  union doca_data task_user_data,
79  union doca_data ctx_user_data);
80 
81 /*********************************************************************************************************************
82  * DOCA DMA Context
83  *********************************************************************************************************************/
84 
88 struct doca_dma;
89 
106 doca_error_t doca_dma_create(struct doca_dev *dev, struct doca_dma **dma);
107 
119 doca_error_t doca_dma_destroy(struct doca_dma *dma);
120 
135 doca_error_t doca_dma_cap_task_memcpy_is_supported(const struct doca_devinfo *devinfo);
136 
147 struct doca_ctx *doca_dma_as_ctx(struct doca_dma *dma);
148 
165 doca_error_t doca_dma_cap_get_max_num_tasks(struct doca_dma *dma, uint32_t *max_num_tasks);
166 
184  uint32_t *max_buf_list_len);
185 
201 doca_error_t doca_dma_cap_task_memcpy_get_max_buf_size(const struct doca_devinfo *devinfo, uint64_t *buf_size);
202 
225  uint32_t num_memcpy_tasks);
226 
248  const struct doca_buf *src,
249  struct doca_buf *dst,
250  union doca_data user_data,
251  struct doca_dma_task_memcpy **task);
252 
262 struct doca_task *doca_dma_task_memcpy_as_task(struct doca_dma_task_memcpy *task);
263 
273 void doca_dma_task_memcpy_set_src(struct doca_dma_task_memcpy *task, const struct doca_buf *src);
274 
284 const struct doca_buf *doca_dma_task_memcpy_get_src(const struct doca_dma_task_memcpy *task);
285 
295 void doca_dma_task_memcpy_set_dst(struct doca_dma_task_memcpy *task, struct doca_buf *dst);
296 
306 struct doca_buf *doca_dma_task_memcpy_get_dst(const struct doca_dma_task_memcpy *task);
307 
323 doca_error_t doca_dma_get_gpu_handle(struct doca_dma *dma, struct doca_gpu_dma **gpu_dma);
324 
325 #ifdef __cplusplus
326 } /* extern "C" */
327 #endif
328 
329 #endif /* DOCA_DMA_H_ */
330 
static void task_error_cb(struct doca_task *se_task, union doca_data task_user_data, union doca_data ctx_user_data)
Definition: common_common.c:65
static void task_completion_cb(struct doca_task *se_task, union doca_data task_user_data, union doca_data ctx_user_data)
Definition: common_common.c:48
static uint64_t *restrict src
Definition: dpaintrin.h:230
#define DOCA_EXPERIMENTAL
To set a Symbol (or specifically a function) as experimental.
Definition: doca_compat.h:103
#define DOCA_STABLE
To set a Symbol (or specifically a function) as stable API, i.e. it won't be changed.
Definition: doca_compat.h:96
DOCA_EXPERIMENTAL doca_error_t doca_dma_get_gpu_handle(struct doca_dma *dma, struct doca_gpu_dma **gpu_dma)
Retrieve the handle in the GPU memory space of a doca_dma.
DOCA_STABLE const struct doca_buf * doca_dma_task_memcpy_get_src(const struct doca_dma_task_memcpy *task)
This method gets source buffer from memcpy task.
DOCA_STABLE struct doca_task * doca_dma_task_memcpy_as_task(struct doca_dma_task_memcpy *task)
This method converts a memcpy task to doca_task.
DOCA_STABLE void doca_dma_task_memcpy_set_dst(struct doca_dma_task_memcpy *task, struct doca_buf *dst)
This method sets destination buffer to memcpy task.
DOCA_STABLE doca_error_t doca_dma_task_memcpy_alloc_init(struct doca_dma *dma, const struct doca_buf *src, struct doca_buf *dst, union doca_data user_data, struct doca_dma_task_memcpy **task)
This method allocates and initializes a DMA memcpy task.
DOCA_STABLE doca_error_t doca_dma_cap_task_memcpy_get_max_buf_list_len(const struct doca_devinfo *devinfo, uint32_t *max_buf_list_len)
DOCA_STABLE struct doca_ctx * doca_dma_as_ctx(struct doca_dma *dma)
DOCA_STABLE void doca_dma_task_memcpy_set_src(struct doca_dma_task_memcpy *task, const struct doca_buf *src)
This method sets source buffer to memcpy task.
DOCA_STABLE struct doca_buf * doca_dma_task_memcpy_get_dst(const struct doca_dma_task_memcpy *task)
This method gets destination buffer from memcpy task.
DOCA_STABLE doca_error_t doca_dma_cap_get_max_num_tasks(struct doca_dma *dma, uint32_t *max_num_tasks)
DOCA_STABLE doca_error_t doca_dma_task_memcpy_set_conf(struct doca_dma *dma, doca_dma_task_memcpy_completion_cb_t task_completion_cb, doca_dma_task_memcpy_completion_cb_t task_error_cb, uint32_t num_memcpy_tasks)
This method sets the DMA memcpy tasks configuration.
void(* doca_dma_task_memcpy_completion_cb_t)(struct doca_dma_task_memcpy *task, union doca_data task_user_data, union doca_data ctx_user_data)
Function to execute on DMA memcpy task completion.
Definition: doca_dma.h:77
DOCA_STABLE doca_error_t doca_dma_cap_task_memcpy_is_supported(const struct doca_devinfo *devinfo)
DOCA_STABLE doca_error_t doca_dma_cap_task_memcpy_get_max_buf_size(const struct doca_devinfo *devinfo, uint64_t *buf_size)
DOCA_STABLE doca_error_t doca_dma_create(struct doca_dev *dev, struct doca_dma **dma)
DOCA_STABLE doca_error_t doca_dma_destroy(struct doca_dma *dma)
enum doca_error doca_error_t
DOCA API return codes.
Convenience type for representing opaque data.
Definition: doca_types.h:56