DPDK  21.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 "rte_dmadev.h"
18 
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22 
23 struct rte_dma_dev;
24 
26 typedef int (*rte_dma_info_get_t)(const struct rte_dma_dev *dev,
27  struct rte_dma_info *dev_info,
28  uint32_t info_sz);
29 
31 typedef int (*rte_dma_configure_t)(struct rte_dma_dev *dev,
32  const struct rte_dma_conf *dev_conf,
33  uint32_t conf_sz);
34 
36 typedef int (*rte_dma_start_t)(struct rte_dma_dev *dev);
37 
39 typedef int (*rte_dma_stop_t)(struct rte_dma_dev *dev);
40 
42 typedef int (*rte_dma_close_t)(struct rte_dma_dev *dev);
43 
45 typedef int (*rte_dma_vchan_setup_t)(struct rte_dma_dev *dev, uint16_t vchan,
46  const struct rte_dma_vchan_conf *conf,
47  uint32_t conf_sz);
48 
50 typedef int (*rte_dma_stats_get_t)(const struct rte_dma_dev *dev,
51  uint16_t vchan, struct rte_dma_stats *stats,
52  uint32_t stats_sz);
53 
55 typedef int (*rte_dma_stats_reset_t)(struct rte_dma_dev *dev, uint16_t vchan);
56 
58 typedef int (*rte_dma_vchan_status_t)(const struct rte_dma_dev *dev, uint16_t vchan,
59  enum rte_dma_vchan_status *status);
60 
62 typedef int (*rte_dma_dump_t)(const struct rte_dma_dev *dev, FILE *f);
63 
70  rte_dma_info_get_t dev_info_get;
71  rte_dma_configure_t dev_configure;
72  rte_dma_start_t dev_start;
73  rte_dma_stop_t dev_stop;
74  rte_dma_close_t dev_close;
75 
76  rte_dma_vchan_setup_t vchan_setup;
77 
78  rte_dma_stats_get_t stats_get;
79  rte_dma_stats_reset_t stats_reset;
80 
81  rte_dma_vchan_status_t vchan_status;
82  rte_dma_dump_t dev_dump;
83 };
84 
94 struct rte_dma_dev_data {
95  char dev_name[RTE_DEV_NAME_MAX_LEN];
96  int16_t dev_id;
97  int16_t numa_node;
98  void *dev_private;
99  struct rte_dma_conf dev_conf;
100  __extension__
101  uint8_t dev_started : 1;
102  uint64_t reserved[2];
104 
116 };
117 
122 struct rte_dma_dev {
124  struct rte_device *device;
125  struct rte_dma_dev_data *data;
127  struct rte_dma_fp_object *fp_obj;
129  const struct rte_dma_dev_ops *dev_ops;
130  enum rte_dma_dev_state state;
131  uint64_t reserved[2];
133 
150 __rte_internal
151 struct rte_dma_dev *rte_dma_pmd_allocate(const char *name, int numa_node,
152  size_t private_data_size);
153 
164 __rte_internal
165 int rte_dma_pmd_release(const char *name);
166 
167 #ifdef __cplusplus
168 }
169 #endif
170 
171 #endif /* RTE_DMADEV_PMD_H */
#define __rte_cache_aligned
Definition: rte_common.h:402
rte_dma_vchan_status
Definition: rte_dmadev.h:680
void * dev_private
rte_dma_dev_state
@ RTE_DMA_DEV_REGISTERED
@ RTE_DMA_DEV_READY
@ RTE_DMA_DEV_UNUSED