DPDK  24.03.0
rte_devargs.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright 2014 6WIND S.A.
3  */
4 
5 #ifndef _RTE_DEVARGS_H_
6 #define _RTE_DEVARGS_H_
7 
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22 
23 #include <stdio.h>
24 
25 #include <rte_dev.h>
26 
27 struct rte_bus;
28 
35 #define RTE_DEVARGS_KEY_BUS "bus"
36 
43 #define RTE_DEVARGS_KEY_CLASS "class"
44 
51 #define RTE_DEVARGS_KEY_DRIVER "driver"
52 
57  RTE_DEVTYPE_ALLOWED,
58  RTE_DEVTYPE_BLOCKED,
59  RTE_DEVTYPE_VIRTUAL,
60 };
61 
72 struct rte_devargs {
80  char name[RTE_DEV_NAME_MAX_LEN];
81  union {
82  const char *args;
83  const char *drv_str;
84  };
85  struct rte_bus *bus;
86  struct rte_class *cls;
87  const char *bus_str;
88  const char *cls_str;
89  char *data;
90 };
91 
124 int
125 rte_devargs_parse(struct rte_devargs *da, const char *dev);
126 
160 int
162  const char *format, ...)
163 __rte_format_printf(2, 0);
164 
171 void
172 rte_devargs_reset(struct rte_devargs *da);
173 
186 int
187 rte_devargs_insert(struct rte_devargs **da);
188 
202 int rte_devargs_add(enum rte_devtype devtype, const char *devargs_str);
203 
217 int rte_devargs_remove(struct rte_devargs *devargs);
218 
228 unsigned int
229 rte_devargs_type_count(enum rte_devtype devtype);
230 
237 void rte_devargs_dump(FILE *f);
238 
255 struct rte_devargs *
256 rte_devargs_next(const char *busname, const struct rte_devargs *start);
257 
261 #define RTE_EAL_DEVARGS_FOREACH(busname, da) \
262  for (da = rte_devargs_next(busname, NULL); \
263  da != NULL; \
264  da = rte_devargs_next(busname, da)) \
265 
266 #ifdef __cplusplus
267 }
268 #endif
269 
270 #endif /* _RTE_DEVARGS_H_ */
rte_devtype
Definition: rte_devargs.h:56
int rte_devargs_add(enum rte_devtype devtype, const char *devargs_str)
struct rte_bus * bus
Definition: rte_devargs.h:85
const char * args
Definition: rte_devargs.h:82
const char * cls_str
Definition: rte_devargs.h:88
int rte_devargs_parsef(struct rte_devargs *da, const char *format,...) __rte_format_printf(2
struct rte_class * cls
Definition: rte_devargs.h:86
struct rte_devargs * rte_devargs_next(const char *busname, const struct rte_devargs *start)
const char * bus_str
Definition: rte_devargs.h:87
unsigned int rte_devargs_type_count(enum rte_devtype devtype)
int rte_devargs_insert(struct rte_devargs **da)
int void rte_devargs_reset(struct rte_devargs *da)
void rte_devargs_dump(FILE *f)
char name[RTE_DEV_NAME_MAX_LEN]
Definition: rte_devargs.h:80
rte_dev_policy
Definition: rte_dev.h:47
int rte_devargs_remove(struct rte_devargs *devargs)
#define __rte_format_printf(format_index, first_arg)
Definition: rte_common.h:188
const char * drv_str
Definition: rte_devargs.h:83
enum rte_dev_policy policy
Definition: rte_devargs.h:78
char * data
Definition: rte_devargs.h:89
RTE_TAILQ_ENTRY(rte_devargs) next
int rte_devargs_parse(struct rte_devargs *da, const char *dev)
enum rte_devtype type
Definition: rte_devargs.h:76