DPDK  19.08.0-rc0
Data Structures | Macros | Enumerations | Functions
rte_devargs.h File Reference
#include <stdio.h>
#include <sys/queue.h>
#include <rte_compat.h>
#include <rte_bus.h>

Go to the source code of this file.

Data Structures

struct  rte_devargs
 

Macros

#define RTE_EAL_DEVARGS_FOREACH(busname, da)
 

Enumerations

enum  rte_devtype
 

Functions

int rte_devargs_parse (struct rte_devargs *da, const char *dev)
 
int rte_devargs_parsef (struct rte_devargs *da, const char *format,...)
 
__rte_experimental int rte_devargs_insert (struct rte_devargs **da)
 
int rte_devargs_add (enum rte_devtype devtype, const char *devargs_str)
 
__rte_experimental int rte_devargs_remove (struct rte_devargs *devargs)
 
unsigned int rte_devargs_type_count (enum rte_devtype devtype)
 
void rte_devargs_dump (FILE *f)
 
struct rte_devargsrte_devargs_next (const char *busname, const struct rte_devargs *start)
 

Detailed Description

RTE devargs: list of devices and their user arguments

This file stores a list of devices and their arguments given by the user when a DPDK application is started. These devices can be PCI devices or virtual devices. These devices are stored at startup in a list of rte_devargs structures.

Definition in file rte_devargs.h.

Macro Definition Documentation

◆ RTE_EAL_DEVARGS_FOREACH

#define RTE_EAL_DEVARGS_FOREACH (   busname,
  da 
)
Value:
for (da = rte_devargs_next(busname, NULL); \
da != NULL; \
da = rte_devargs_next(busname, da)) \
struct rte_devargs * rte_devargs_next(const char *busname, const struct rte_devargs *start)

Iterate over all rte_devargs for a specific bus.

Definition at line 231 of file rte_devargs.h.

Enumeration Type Documentation

◆ rte_devtype

Type of generic device

Definition at line 31 of file rte_devargs.h.

Function Documentation

◆ rte_devargs_parse()

int rte_devargs_parse ( struct rte_devargs da,
const char *  dev 
)

Parse a device string.

Verify that a bus is capable of handling the device passed in argument. Store which bus will handle the device, its name and the eventual device parameters.

The syntax is:

bus:device_identifier,arg1=val1,arg2=val2

where "bus:" is the bus name followed by any character separator. The bus name is optional. If no bus name is specified, each bus will attempt to recognize the device identifier. The first one to succeed will be used.

Examples:

pci:0000:05.00.0,arg=val
05.00.0,arg=val
vdev:net_ring0
Parameters
daThe devargs structure holding the device information.
devString describing a device.
Returns
  • 0 on success.
  • Negative errno on error.

◆ rte_devargs_parsef()

int rte_devargs_parsef ( struct rte_devargs da,
const char *  format,
  ... 
)

Parse a device string.

Verify that a bus is capable of handling the device passed in argument. Store which bus will handle the device, its name and the eventual device parameters.

The device string is built with a printf-like syntax.

The syntax is:

bus:device_identifier,arg1=val1,arg2=val2

where "bus:" is the bus name followed by any character separator. The bus name is optional. If no bus name is specified, each bus will attempt to recognize the device identifier. The first one to succeed will be used.

Examples:

pci:0000:05.00.0,arg=val
05.00.0,arg=val
vdev:net_ring0
Parameters
daThe devargs structure holding the device information.
formatFormat string describing a device.
Returns
  • 0 on success.
  • Negative errno on error.
Examples
examples/multi_process/hotplug_mp/commands.c.

◆ rte_devargs_insert()

__rte_experimental int rte_devargs_insert ( struct rte_devargs **  da)

Insert an rte_devargs in the global list.

Parameters
daThe devargs structure to insert. If a devargs for the same device is already inserted, it will be updated and returned. It means *da pointer can change.
Returns
  • 0 on success
  • Negative on error.

◆ rte_devargs_add()

int rte_devargs_add ( enum rte_devtype  devtype,
const char *  devargs_str 
)

Add a device to the user device list See rte_devargs_parse() for details.

Parameters
devtypeThe type of the device.
devargs_strThe arguments as given by the user.
Returns
  • 0 on success
  • A negative value on error

◆ rte_devargs_remove()

__rte_experimental int rte_devargs_remove ( struct rte_devargs devargs)

Remove a device from the user device list. Its resources are freed. If the devargs cannot be found, nothing happens.

Parameters
devargsThe instance or a copy of devargs to remove.
Returns
0 on success. <0 on error. >0 if the devargs was not within the user device list.

◆ rte_devargs_type_count()

unsigned int rte_devargs_type_count ( enum rte_devtype  devtype)

Count the number of user devices of a specified type

Parameters
devtypeThe type of the devices to counted.
Returns
The number of devices.

◆ rte_devargs_dump()

void rte_devargs_dump ( FILE *  f)

This function dumps the list of user device and their arguments.

Parameters
fA pointer to a file for output
Examples
examples/bond/main.c.

◆ rte_devargs_next()

struct rte_devargs* rte_devargs_next ( const char *  busname,
const struct rte_devargs start 
)

Find next rte_devargs matching the provided bus name.

Parameters
busnameLimit the iteration to devargs related to buses matching this name. Will return any next rte_devargs if NULL.
startStarting iteration point. The iteration will start at the first rte_devargs if NULL.
Returns
Next rte_devargs entry matching the requested bus, NULL if there is none.