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
20extern "C" {
21#endif
22
23struct rte_dma_dev;
24
26typedef 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
31typedef int (*rte_dma_configure_t)(struct rte_dma_dev *dev,
32 const struct rte_dma_conf *dev_conf,
33 uint32_t conf_sz);
34
36typedef int (*rte_dma_start_t)(struct rte_dma_dev *dev);
37
39typedef int (*rte_dma_stop_t)(struct rte_dma_dev *dev);
40
42typedef int (*rte_dma_close_t)(struct rte_dma_dev *dev);
43
45typedef 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
50typedef 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
55typedef int (*rte_dma_stats_reset_t)(struct rte_dma_dev *dev, uint16_t vchan);
56
58typedef int (*rte_dma_vchan_status_t)(const struct rte_dma_dev *dev, uint16_t vchan,
59 enum rte_dma_vchan_status *status);
60
62typedef 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
94struct 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
122struct 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
151struct rte_dma_dev *rte_dma_pmd_allocate(const char *name, int numa_node,
152 size_t private_data_size);
153
164__rte_internal
165int 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