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
23 extern "C" {
24 #endif
25 
26 struct rte_dma_dev;
27 
29 typedef 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 
34 typedef int (*rte_dma_configure_t)(struct rte_dma_dev *dev,
35  const struct rte_dma_conf *dev_conf,
36  uint32_t conf_sz);
37 
39 typedef int (*rte_dma_start_t)(struct rte_dma_dev *dev);
40 
42 typedef int (*rte_dma_stop_t)(struct rte_dma_dev *dev);
43 
45 typedef int (*rte_dma_close_t)(struct rte_dma_dev *dev);
46 
48 typedef 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 
53 typedef 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 
58 typedef int (*rte_dma_stats_reset_t)(struct rte_dma_dev *dev, uint16_t vchan);
59 
61 typedef int (*rte_dma_vchan_status_t)(const struct rte_dma_dev *dev, uint16_t vchan,
62  enum rte_dma_vchan_status *status);
63 
65 typedef int (*rte_dma_dump_t)(const struct rte_dma_dev *dev, FILE *f);
66 
68 typedef 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 
74 typedef int (*rte_dma_access_pair_group_destroy_t)(const struct rte_dma_dev *dev,
75  int16_t group_id);
76 
78 typedef 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 
83 typedef int (*rte_dma_access_pair_group_leave_t)(const struct rte_dma_dev *dev, int16_t group_id);
84 
86 typedef 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 
126 struct __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 
154 struct __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
183 struct rte_dma_dev *rte_dma_pmd_allocate(const char *name, int numa_node,
184  size_t private_data_size);
185 
196 __rte_internal
197 int rte_dma_pmd_release(const char *name);
198 
209 __rte_internal
210 struct 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