DPDK 25.07.0
rte_dev.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2014 6WIND S.A.
3 */
4
5#ifndef _RTE_DEV_H_
6#define _RTE_DEV_H_
7
16#include <stdio.h>
17
18#include <rte_config.h>
19#include <rte_common.h>
20#include <rte_log.h>
21
22#ifdef __cplusplus
23extern "C" {
24#endif
25
26struct rte_bus;
27struct rte_devargs;
28struct rte_device;
29struct rte_driver;
30
38};
39
40typedef void (*rte_dev_event_cb_fn)(const char *device_name,
41 enum rte_dev_event_type event,
42 void *cb_arg);
43
48 RTE_DEV_ALLOWED,
49 RTE_DEV_BLOCKED,
50};
51
56 uint64_t phys_addr;
57 uint64_t len;
58 void *addr;
59};
60
69const char *
70rte_driver_name(const struct rte_driver *driver);
71
80const struct rte_bus *
81rte_dev_bus(const struct rte_device *dev);
82
91const char *
92rte_dev_bus_info(const struct rte_device *dev);
93
102const struct rte_devargs *
103rte_dev_devargs(const struct rte_device *dev);
104
113const struct rte_driver *
114rte_dev_driver(const struct rte_device *dev);
115
124const char *
125rte_dev_name(const struct rte_device *dev);
126
135int
136rte_dev_numa_node(const struct rte_device *dev);
137
138/*
139 * Internal identifier length
140 * Sufficiently large to allow for UUID or PCI address
141 */
142#define RTE_DEV_NAME_MAX_LEN 64
143
152int rte_dev_is_probed(const struct rte_device *dev);
153
170int rte_eal_hotplug_add(const char *busname, const char *devname,
171 const char *drvargs);
172
184int rte_dev_probe(const char *devargs);
185
199int rte_eal_hotplug_remove(const char *busname, const char *devname);
200
212int rte_dev_remove(struct rte_device *dev);
213
233typedef int (*rte_dev_cmp_t)(const struct rte_device *dev, const void *data);
234
241 const char *dev_str;
242 const char *bus_str;
243 const char *cls_str;
244 struct rte_bus *bus;
245 struct rte_class *cls;
246 struct rte_device *device;
248};
249
278typedef void *(*rte_dev_iterate_t)(const void *start,
279 const char *devstr,
280 const struct rte_dev_iterator *it);
281
302int
303rte_dev_iterator_init(struct rte_dev_iterator *it, const char *str);
304
321struct rte_device *
323
324#define RTE_DEV_FOREACH(dev, devstr, it) \
325 for (rte_dev_iterator_init(it, devstr), \
326 dev = rte_dev_iterator_next(it); \
327 dev != NULL; \
328 dev = rte_dev_iterator_next(it))
329
346int
347rte_dev_event_callback_register(const char *device_name,
348 rte_dev_event_cb_fn cb_fn,
349 void *cb_arg);
350
367int
368rte_dev_event_callback_unregister(const char *device_name,
369 rte_dev_event_cb_fn cb_fn,
370 void *cb_arg);
371
381void
382rte_dev_event_callback_process(const char *device_name,
383 enum rte_dev_event_type event);
384
392int
394
402int
404
412int
414
422int
424
445int
446rte_dev_dma_map(struct rte_device *dev, void *addr, uint64_t iova, size_t len);
447
468int
469rte_dev_dma_unmap(struct rte_device *dev, void *addr, uint64_t iova,
470 size_t len);
471
472#ifdef __cplusplus
473}
474#endif
475
476#endif /* _RTE_DEV_H_ */
int rte_dev_dma_map(struct rte_device *dev, void *addr, uint64_t iova, size_t len)
int rte_dev_event_monitor_start(void)
int rte_dev_event_monitor_stop(void)
struct rte_device * rte_dev_iterator_next(struct rte_dev_iterator *it)
rte_dev_policy
Definition: rte_dev.h:47
int rte_dev_is_probed(const struct rte_device *dev)
int rte_dev_dma_unmap(struct rte_device *dev, void *addr, uint64_t iova, size_t len)
int rte_dev_event_callback_register(const char *device_name, rte_dev_event_cb_fn cb_fn, void *cb_arg)
const struct rte_driver * rte_dev_driver(const struct rte_device *dev)
int rte_dev_iterator_init(struct rte_dev_iterator *it, const char *str)
int rte_dev_probe(const char *devargs)
const char * rte_dev_name(const struct rte_device *dev)
const struct rte_bus * rte_dev_bus(const struct rte_device *dev)
int rte_dev_hotplug_handle_enable(void)
int rte_dev_event_callback_unregister(const char *device_name, rte_dev_event_cb_fn cb_fn, void *cb_arg)
const char * rte_driver_name(const struct rte_driver *driver)
int rte_dev_hotplug_handle_disable(void)
int rte_dev_remove(struct rte_device *dev)
int rte_eal_hotplug_add(const char *busname, const char *devname, const char *drvargs)
int rte_dev_numa_node(const struct rte_device *dev)
const char * rte_dev_bus_info(const struct rte_device *dev)
const struct rte_devargs * rte_dev_devargs(const struct rte_device *dev)
int(* rte_dev_cmp_t)(const struct rte_device *dev, const void *data)
Definition: rte_dev.h:233
void rte_dev_event_callback_process(const char *device_name, enum rte_dev_event_type event)
rte_dev_event_type
Definition: rte_dev.h:34
@ RTE_DEV_EVENT_ADD
Definition: rte_dev.h:35
@ RTE_DEV_EVENT_REMOVE
Definition: rte_dev.h:36
@ RTE_DEV_EVENT_MAX
Definition: rte_dev.h:37
int rte_eal_hotplug_remove(const char *busname, const char *devname)
const char * bus_str
Definition: rte_dev.h:242
struct rte_class * cls
Definition: rte_dev.h:245
void * class_device
Definition: rte_dev.h:247
struct rte_device * device
Definition: rte_dev.h:246
struct rte_bus * bus
Definition: rte_dev.h:244
const char * cls_str
Definition: rte_dev.h:243
const char * dev_str
Definition: rte_dev.h:241
uint64_t phys_addr
Definition: rte_dev.h:56
uint64_t len
Definition: rte_dev.h:57
void * addr
Definition: rte_dev.h:58