DPDK 25.11.0
rte_dmadev_pmd.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2021 HiSilicon Limited
3 */
4
5#ifndef RTE_DMADEV_PMD_H
6#define RTE_DMADEV_PMD_H
7
17#include <dev_driver.h>
18
19#include <rte_compat.h>
20#include "rte_dmadev.h"
21
22#ifdef __cplusplus
23extern "C" {
24#endif
25
26struct rte_dma_dev;
27
29typedef int (*rte_dma_info_get_t)(const struct rte_dma_dev *dev,
30 struct rte_dma_info *dev_info,
31 uint32_t info_sz);
32
34typedef int (*rte_dma_configure_t)(struct rte_dma_dev *dev,
35 const struct rte_dma_conf *dev_conf,
36 uint32_t conf_sz);
37
39typedef int (*rte_dma_start_t)(struct rte_dma_dev *dev);
40
42typedef int (*rte_dma_stop_t)(struct rte_dma_dev *dev);
43
45typedef int (*rte_dma_close_t)(struct rte_dma_dev *dev);
46
48typedef int (*rte_dma_vchan_setup_t)(struct rte_dma_dev *dev, uint16_t vchan,
49 const struct rte_dma_vchan_conf *conf,
50 uint32_t conf_sz);
51
53typedef int (*rte_dma_stats_get_t)(const struct rte_dma_dev *dev,
54 uint16_t vchan, struct rte_dma_stats *stats,
55 uint32_t stats_sz);
56
58typedef int (*rte_dma_stats_reset_t)(struct rte_dma_dev *dev, uint16_t vchan);
59
61typedef int (*rte_dma_vchan_status_t)(const struct rte_dma_dev *dev, uint16_t vchan,
62 enum rte_dma_vchan_status *status);
63
65typedef int (*rte_dma_dump_t)(const struct rte_dma_dev *dev, FILE *f);
66
68typedef int (*rte_dma_access_pair_group_create_t)(const struct rte_dma_dev *dev,
69 rte_uuid_t domain_id, rte_uuid_t token,
70 int16_t *group_id,
72
74typedef int (*rte_dma_access_pair_group_destroy_t)(const struct rte_dma_dev *dev,
75 int16_t group_id);
76
78typedef int (*rte_dma_access_pair_group_join_t)(const struct rte_dma_dev *dev, rte_uuid_t domain_id,
79 rte_uuid_t token, int16_t group_id,
81
83typedef int (*rte_dma_access_pair_group_leave_t)(const struct rte_dma_dev *dev, int16_t group_id);
84
86typedef int (*rte_dma_access_pair_group_handler_get_t)(const struct rte_dma_dev *dev,
87 int16_t group_id, rte_uuid_t domain_id,
88 uint16_t *handler);
89
96 rte_dma_info_get_t dev_info_get;
97 rte_dma_configure_t dev_configure;
98 rte_dma_start_t dev_start;
99 rte_dma_stop_t dev_stop;
100 rte_dma_close_t dev_close;
101
102 rte_dma_vchan_setup_t vchan_setup;
103
104 rte_dma_stats_get_t stats_get;
105 rte_dma_stats_reset_t stats_reset;
106
107 rte_dma_vchan_status_t vchan_status;
108 rte_dma_dump_t dev_dump;
109
110 rte_dma_access_pair_group_create_t access_pair_group_create;
111 rte_dma_access_pair_group_destroy_t access_pair_group_destroy;
112 rte_dma_access_pair_group_join_t access_pair_group_join;
113 rte_dma_access_pair_group_leave_t access_pair_group_leave;
114 rte_dma_access_pair_group_handler_get_t access_pair_group_handler_get;
115};
116
126struct __rte_cache_aligned rte_dma_dev_data {
127 char dev_name[RTE_DEV_NAME_MAX_LEN];
128 int16_t dev_id;
129 int16_t numa_node;
130 void *dev_private;
131 struct rte_dma_conf dev_conf;
132 __extension__
133 uint8_t dev_started : 1;
134 uint64_t reserved[2];
135};
136
148};
149
154struct __rte_cache_aligned rte_dma_dev {
156 struct rte_device *device;
157 struct rte_dma_dev_data *data;
159 struct rte_dma_fp_object *fp_obj;
161 const struct rte_dma_dev_ops *dev_ops;
162 enum rte_dma_dev_state state;
163 uint64_t reserved[2];
164};
165
182__rte_internal
183struct rte_dma_dev *rte_dma_pmd_allocate(const char *name, int numa_node,
184 size_t private_data_size);
185
196__rte_internal
197int rte_dma_pmd_release(const char *name);
198
209__rte_internal
210struct rte_dma_dev *rte_dma_pmd_get_dev_by_id(int16_t dev_id);
211
212#ifdef __cplusplus
213}
214#endif
215
216#endif /* RTE_DMADEV_PMD_H */
#define __rte_cache_aligned
Definition: rte_common.h:739
void(* rte_dma_access_pair_group_event_cb_t)(int16_t dev_id, int16_t group_id, rte_uuid_t domain_id, enum rte_dma_access_pair_group_event_type event)
Definition: rte_dmadev.h:856
rte_dma_vchan_status
Definition: rte_dmadev.h:773
rte_dma_dev_state
@ RTE_DMA_DEV_REGISTERED
@ RTE_DMA_DEV_READY
@ RTE_DMA_DEV_UNUSED
unsigned char rte_uuid_t[16]
Definition: rte_uuid.h:24