---
name: "rte_devargs.h"
section: "3"
platform: "linux"
package: "dpdk-doc"
version: "24.11.4-0+deb13u1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/rte_devargs.h"
---

# rte\_devargs.h(3)

## NAME

rte\_devargs.h

## SYNOPSIS

`#include <stdio.h>`\
 `#include <rte_dev.h>`\

### Data Structures

struct **rte\_devargs**\

### Macros

\#define **RTE\_DEVARGS\_KEY\_BUS**   'bus'\
 \#define **RTE\_DEVARGS\_KEY\_CLASS**   'class'\
 \#define **RTE\_DEVARGS\_KEY\_DRIVER**   'driver'\
 \#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\_format\_printf**(2\
 int void **rte\_devargs\_reset** (struct **rte\_devargs** \*da)\
 int **rte\_devargs\_insert** (struct **rte\_devargs** \*\*da)\
 int **rte\_devargs\_add** (enum **rte\_devtype** devtype, const char \*devargs\_str)\
 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\_devargs** \* **rte\_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

### #define RTE\_DEVARGS\_KEY\_BUS 'bus'

Bus type key in global devargs syntax.

Legacy devargs parser doesn't use this key as bus type is resolved as first optional value separated by ':'.

Definition at line **35** of file **rte\_devargs.h**.

### #define RTE\_DEVARGS\_KEY\_CLASS 'class'

Class type key in global devargs syntax.

Legacy devargs parser doesn't parse class type. PMD is encouraged to use this key to resolve class type.

Definition at line **43** of file **rte\_devargs.h**.

### #define RTE\_DEVARGS\_KEY\_DRIVER 'driver'

Driver type key in global devargs syntax.

Legacy devargs parser doesn't parse driver type. PMD is encouraged to use this key to resolve driver type.

Definition at line **51** of file **rte\_devargs.h**.

### #define RTE\_EAL\_DEVARGS\_FOREACH(busname, da)

**Value:**.PP

```
    for (da = rte_devargs_next(busname, NULL); \
         da != NULL; \
         da = rte_devargs_next(busname, da)) \
```

Iterate over all **rte\_devargs** for a specific bus.

Definition at line **261** of file **rte\_devargs.h**.

## Enumeration Type Documentation

### enum rte\_devtype

Type of generic device

Definition at line **56** of file **rte\_devargs.h**.

## Function Documentation

### 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**

*da* The devargs structure holding the device information.\
 *dev* String describing a device.

**Returns**

- •

  0 on success.

- •

  Negative errno on error.

### 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**

*da* The devargs structure holding the device information. \
 *format* Format string describing a device.

**Returns**

- •

  0 on success.

- •

  Negative errno on error.

### int void rte\_devargs\_reset (struct rte\_devargs \* da)

Free resources in devargs.

**Parameters**

*da* The devargs structure holding the device information.

### int rte\_devargs\_insert (struct rte\_devargs \*\* da)

Insert an **rte\_devargs** in the global list.

**Parameters**

*da* The 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.

### 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**

*devtype* The type of the device. \
 *devargs\_str* The arguments as given by the user.

**Returns**

- •

  0 on success

- •

  A negative value on error

### 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**

*devargs* The 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.

### unsigned int rte\_devargs\_type\_count (enum rte\_devtype devtype)

Count the number of user devices of a specified type

**Parameters**

*devtype* The type of the devices to counted.

**Returns**

The number of devices.

### void rte\_devargs\_dump (FILE \* f)

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

**Parameters**

*f* A pointer to a file for output

### struct rte\_devargs \* rte\_devargs\_next (const char \* busname, const struct rte\_devargs \* start)

Find next **rte\_devargs** matching the provided bus name.

**Parameters**

*busname* Limit the iteration to devargs related to buses matching this name. Will return any next **rte\_devargs** if NULL.\
 *start* Starting 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.

## Author

Generated automatically by Doxygen for DPDK from the source code.
