---
name: "rte_dev.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_dev.h"
---

# rte\_dev.h(3)

## NAME

rte\_dev.h

## SYNOPSIS

`#include <stdio.h>`\
 `#include <rte_config.h>`\
 `#include <rte_common.h>`\
 `#include <rte_log.h>`\

### Data Structures

struct **rte\_mem\_resource**\
 struct **rte\_dev\_iterator**\

### Macros

\#define **RTE\_PMD\_REGISTER\_KMOD\_DEP**(name,  str)\

### Typedefs

**typedef** int(\* **rte\_dev\_cmp\_t**) (const struct rte\_device \*dev, const void \*data)\
 **typedef** void \*(\* **rte\_dev\_iterate\_t**) (const void \*start, const char \*devstr, const struct **rte\_dev\_iterator** \*it)\

### Enumerations

enum **rte\_dev\_event\_type** { **RTE\_DEV\_EVENT\_ADD**, **RTE\_DEV\_EVENT\_REMOVE**, **RTE\_DEV\_EVENT\_MAX** }\
 enum **rte\_dev\_policy** \

### Functions

const char \* **rte\_driver\_name** (const struct rte\_driver \*driver)\
 const struct rte\_bus \* **rte\_dev\_bus** (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)\
 const struct rte\_driver \* **rte\_dev\_driver** (const struct rte\_device \*dev)\
 const char \* **rte\_dev\_name** (const struct rte\_device \*dev)\
 int **rte\_dev\_numa\_node** (const struct rte\_device \*dev)\
 int **rte\_dev\_is\_probed** (const struct rte\_device \*dev)\
 int **rte\_eal\_hotplug\_add** (const char \*busname, const char \*devname, const char \*drvargs)\
 int **rte\_dev\_probe** (const char \*devargs)\
 int **rte\_eal\_hotplug\_remove** (const char \*busname, const char \*devname)\
 int **rte\_dev\_remove** (struct rte\_device \*dev)\
 int **rte\_dev\_iterator\_init** (struct **rte\_dev\_iterator** \*it, const char \*str)\
 struct rte\_device \* **rte\_dev\_iterator\_next** (struct **rte\_dev\_iterator** \*it)\
 int **rte\_dev\_event\_callback\_register** (const char \*device\_name, rte\_dev\_event\_cb\_fn cb\_fn, void \*cb\_arg)\
 int **rte\_dev\_event\_callback\_unregister** (const char \*device\_name, rte\_dev\_event\_cb\_fn cb\_fn, void \*cb\_arg)\
 void **rte\_dev\_event\_callback\_process** (const char \*device\_name, enum **rte\_dev\_event\_type** event)\
 int **rte\_dev\_event\_monitor\_start** (void)\
 int **rte\_dev\_event\_monitor\_stop** (void)\
 int **rte\_dev\_hotplug\_handle\_enable** (void)\
 int **rte\_dev\_hotplug\_handle\_disable** (void)\
 int **rte\_dev\_dma\_map** (struct rte\_device \*dev, void \*addr, uint64\_t iova, size\_t len)\
 int **rte\_dev\_dma\_unmap** (struct rte\_device \*dev, void \*addr, uint64\_t iova, size\_t len)\

## Detailed Description

RTE PMD Registration Interface

This file manages the list of device drivers.

Definition in file **rte\_dev.h**.

## Macro Definition Documentation

### #define RTE\_PMD\_REGISTER\_KMOD\_DEP(name, str)

**Value:**.PP

```
static const char DRV_EXP_TAG(name, kmod_dep_export)[] \
__rte_used = str
```

Advertise the list of kernel modules required to run this driver

This string lists the kernel modules required for the devices associated to a PMD. The format of each line of the string is: '\<device-pattern\> \<kmod-expression\>'.

The possible formats for the device pattern are: '\*' all devices supported by this driver 'pci:\*' all PCI devices supported by this driver 'pci:v8086:d\*:sv\*:sd\*' all PCI devices supported by this driver whose vendor id is 0x8086.

The format of the kernel modules list is a parenthesized expression containing logical-and (&) and logical-or (\|).

The device pattern and the kmod expression are separated by a space.

Example:

- •

  Definition at line **272** of file **rte\_dev.h**.

## Typedef Documentation

### typedef int(\* rte\_dev\_cmp\_t) (const struct rte\_device \*dev, const void \*data)

Device comparison function.

This type of function is used to compare an rte\_device with arbitrary data.

**Parameters**

*dev* Device handle.\
 *data* Data to compare against. The type of this parameter is determined by the kind of comparison performed by the function.

**Returns**

0 if the device matches the data. !0 if the device does not match. \<0 if ordering is possible and the device is lower than the data. \>0 if ordering is possible and the device is greater than the data.

Definition at line **233** of file **rte\_dev.h**.

### typedef void \*(\* rte\_dev\_iterate\_t) (const void \*start, const char \*devstr, const struct rte\_dev\_iterator \*it)

Device iteration function.

Find the next device matching properties passed in parameters. The function takes an additional `start` parameter, that is used as starting context when relevant.

The function returns the current element in the iteration. This return value will potentially be used as a start parameter in subsequent calls to the function.

The additional iterator parameter is only there if a specific implementation needs additional context. It must not be modified by the iteration function itself.

**Parameters**

*start* Starting iteration context.\
 *devstr* Device description string.\
 *it* Device iterator.

**Returns**

The address of the current element matching the device description string.

Definition at line **319** of file **rte\_dev.h**.

## Enumeration Type Documentation

### enum rte\_dev\_event\_type

The device event type.

**Enumerator**

- *RTE\_DEV\_EVENT\_ADD*

  *device being added*

- *RTE\_DEV\_EVENT\_REMOVE*

  *device being removed*

- *RTE\_DEV\_EVENT\_MAX*

  *max value of this enum*

*Definition at line* **34** *of file* **rte\_dev.h***.*

### enum rte\_dev\_policy

*Device policies.*

*Definition at line* **47** *of file* **rte\_dev.h***.*

## Function Documentation

### const char \* rte\_driver\_name (const struct rte\_driver \* driver)

*Retrieve a driver name.*

**Parameters**

*driver A pointer to a driver structure.*

**Returns**

*A pointer to the driver name string.*

### const struct rte\_bus \* rte\_dev\_bus (const struct rte\_device \* dev)

*Retrieve a device bus.*

**Parameters**

*dev A pointer to a device structure.*

**Returns**

*A pointer to this device bus.*

### const char \* rte\_dev\_bus\_info (const struct rte\_device \* dev)

*Retrieve bus specific information for a device.*

**Parameters**

*dev A pointer to a device structure.*

**Returns**

*A string describing this device or NULL if none is available.*

### const struct rte\_devargs \* rte\_dev\_devargs (const struct rte\_device \* dev)

*Retrieve a device arguments.*

**Parameters**

*dev A pointer to a device structure.*

**Returns**

*A pointer to this device devargs.*

### const struct rte\_driver \* rte\_dev\_driver (const struct rte\_device \* dev)

*Retrieve a device driver.*

**Parameters**

*dev A pointer to a device structure.*

**Returns**

*A pointer to this device driver.*

### const char \* rte\_dev\_name (const struct rte\_device \* dev)

*Retrieve a device name.*

**Parameters**

*dev A pointer to a device structure.*

**Returns**

*A pointer to this device name.*

### int rte\_dev\_numa\_node (const struct rte\_device \* dev)

*Retrieve a device numa node.*

**Parameters**

*dev A pointer to a device structure.*

**Returns**

*A pointer to this device numa node.*

### int rte\_dev\_is\_probed (const struct rte\_device \* dev)

*Query status of a device.*

**Parameters**

*dev Generic device pointer.*

**Returns**

*(int)true if already probed successfully, 0 otherwise.*

### int rte\_eal\_hotplug\_add (const char \* busname, const char \* devname, const char \* drvargs)

*Hotplug add a given device to a specific bus.*

*In multi-process, it will request other processes to add the same device. A failure, in any process, will rollback the action*

**Parameters**

*busname The bus name the device is added to.* \
 *devname The device name. Based on this device name, eal will identify a driver capable of handling it and pass it to the driver probing function.* \
 *drvargs Device arguments to be passed to the driver.*

**Returns**

*0 on success, negative on error.*

### int rte\_dev\_probe (const char \* devargs)

*Add matching devices.*

*In multi-process, it will request other processes to add the same device. A failure, in any process, will rollback the action*

**Parameters**

*devargs Device arguments including bus, class and driver properties.*

**Returns**

*0 on success, negative on error.*

### int rte\_eal\_hotplug\_remove (const char \* busname, const char \* devname)

*Hotplug remove a given device from a specific bus.*

*In multi-process, it will request other processes to remove the same device. A failure, in any process, will rollback the action*

**Parameters**

*busname The bus name the device is removed from.* \
 *devname The device name being removed.*

**Returns**

*0 on success, negative on error.*

### int rte\_dev\_remove (struct rte\_device \* dev)

*Remove one device.*

*In multi-process, it will request other processes to remove the same device. A failure, in any process, will rollback the action*

**Parameters**

*dev Data structure of the device to remove.*

**Returns**

*0 on success, negative on error.*

### int rte\_dev\_iterator\_init (struct rte\_dev\_iterator \* it, const char \* str)

*Initializes a device iterator.*

*This iterator allows accessing a list of devices matching a criteria. The device matching is made among all buses and classes currently registered, filtered by the device description given as parameter.*

*This function will not allocate any memory. It is safe to stop the iteration at any moment and let the iterator go out of context.*

**Parameters**

*it Device iterator handle.*\
 *str Device description string.*

**Returns**

*0 on successful initialization. \<0 on error.*

### struct rte\_device \* rte\_dev\_iterator\_next (struct rte\_dev\_iterator \* it)

*Iterates on a device iterator.*

*Generates a new rte\_device handle corresponding to the next element in the list described in comprehension by the iterator.*

*The next object is returned, and the iterator is updated.*

**Parameters**

*it Device iterator handle.*

**Returns**

*An rte\_device handle if found. NULL if an error occurred (rte\_errno is set). NULL if no device could be found (rte\_errno is not set).*

### int rte\_dev\_event\_callback\_register (const char \* device\_name, rte\_dev\_event\_cb\_fn cb\_fn, void \* cb\_arg)

*It registers the callback for the specific device. Multiple callbacks can be registered at the same time.*

**Parameters**

*device\_name The device name, that is the param name of the struct rte\_device, null value means for all devices.* \
 *cb\_fn callback address.* \
 *cb\_arg address of parameter for callback.*

**Returns**

- •

  *On success, zero.*

- •

  *On failure, a negative value.*

### int rte\_dev\_event\_callback\_unregister (const char \* device\_name, rte\_dev\_event\_cb\_fn cb\_fn, void \* cb\_arg)

*It unregisters the callback according to the specified device.*

**Parameters**

*device\_name The device name, that is the param name of the struct rte\_device, null value means for all devices and their callbacks.* \
 *cb\_fn callback address.* \
 *cb\_arg address of parameter for callback, (void \*)-1 means to remove all registered which has the same callback address.*

**Returns**

- •

  *On success, return the number of callback entities removed.*

- •

  *On failure, a negative value.*

### void rte\_dev\_event\_callback\_process (const char \* device\_name, enum rte\_dev\_event\_type event)

*Executes all the user application registered callbacks for the specific device.*

**Parameters**

*device\_name The device name.* \
 *event the device event type.*

### int rte\_dev\_event\_monitor\_start (void)

*Start the device event monitoring.*

**Returns**

- •

  *On success, zero.*

- •

  *On failure, a negative value.*

### int rte\_dev\_event\_monitor\_stop (void)

*Stop the device event monitoring.*

**Returns**

- •

  *On success, zero.*

- •

  *On failure, a negative value.*

### int rte\_dev\_hotplug\_handle\_enable (void)

*Enable hotplug handling for devices.*

**Returns**

- •

  *On success, zero.*

- •

  *On failure, a negative value.*

### int rte\_dev\_hotplug\_handle\_disable (void)

*Disable hotplug handling for devices.*

**Returns**

- •

  *On success, zero.*

- •

  *On failure, a negative value.*

### int rte\_dev\_dma\_map (struct rte\_device \* dev, void \* addr, uint64\_t iova, size\_t len)

*Device level DMA map function. After a successful call, the memory segment will be mapped to the given device.*

**Note**

*: Memory must be registered in advance using rte\_extmem\_\* APIs.*

**Parameters**

*dev Device pointer.* \
 *addr Virtual address to map.* \
 *iova IOVA address to map.* \
 *len Length of the memory segment being mapped.*

**Returns**

*0 if mapping was successful. Negative value and rte\_errno is set otherwise.*

### int rte\_dev\_dma\_unmap (struct rte\_device \* dev, void \* addr, uint64\_t iova, size\_t len)

*Device level DMA unmap function. After a successful call, the memory segment will no longer be accessible by the given device.*

**Note**

*: Memory must be registered in advance using rte\_extmem\_\* APIs.*

**Parameters**

*dev Device pointer.* \
 *addr Virtual address to unmap.* \
 *iova IOVA address to unmap.* \
 *len Length of the memory segment being mapped.*

**Returns**

*0 if un-mapping was successful. Negative value and rte\_errno is set otherwise.*

## Author

*Generated automatically by Doxygen for DPDK from the source code.*
