DPDK  17.08.2
Data Structures | Macros | Typedefs | Enumerations | Functions
rte_bus.h File Reference
#include <stdio.h>
#include <sys/queue.h>
#include <rte_log.h>
#include <rte_dev.h>

Go to the source code of this file.

Data Structures

struct  rte_bus_conf
struct  rte_bus

Macros

#define RTE_REGISTER_BUS(nm, bus)

Typedefs

typedef int(* rte_bus_scan_t )(void)
typedef int(* rte_bus_probe_t )(void)
typedef struct rte_device *(* rte_bus_find_device_t )(const struct rte_device *start, rte_dev_cmp_t cmp, const void *data)
typedef int(* rte_bus_plug_t )(struct rte_device *dev)
typedef int(* rte_bus_unplug_t )(struct rte_device *dev)
typedef int(* rte_bus_parse_t )(const char *name, void *addr)
typedef int(* rte_bus_cmp_t )(const struct rte_bus *bus, const void *data)

Enumerations

enum  rte_bus_scan_mode

Functions

 TAILQ_HEAD (rte_bus_list, rte_bus)
void rte_bus_register (struct rte_bus *bus)
void rte_bus_unregister (struct rte_bus *bus)
int rte_bus_scan (void)
int rte_bus_probe (void)
void rte_bus_dump (FILE *f)
struct rte_busrte_bus_find (const struct rte_bus *start, rte_bus_cmp_t cmp, const void *data)
struct rte_busrte_bus_find_by_device (const struct rte_device *dev)
struct rte_busrte_bus_find_by_name (const char *busname)

Detailed Description

DPDK device bus interface

This file exposes API and interfaces for bus abstraction over the devices and drivers in EAL.

Definition in file rte_bus.h.

Macro Definition Documentation

#define RTE_REGISTER_BUS (   nm,
  bus 
)
Value:
RTE_INIT_PRIO(businitfn_ ##nm, 110); \
static void businitfn_ ##nm(void) \
{\
(bus).name = RTE_STR(nm);\
rte_bus_register(&bus); \
}

Helper for Bus registration. The constructor has higher priority than PMD constructors.

Definition at line 287 of file rte_bus.h.

Typedef Documentation

typedef int(* rte_bus_scan_t)(void)

Bus specific scan for devices attached on the bus. For each bus object, the scan would be responsible for finding devices and adding them to its private device list.

A bus should mandatorily implement this method.

Returns
0 for successful scan <0 for unsuccessful scan with error value

Definition at line 69 of file rte_bus.h.

typedef int(* rte_bus_probe_t)(void)

Implementation specific probe function which is responsible for linking devices on that bus with applicable drivers.

This is called while iterating over each registered bus.

Returns
0 for successful probe !0 for any error while probing

Definition at line 81 of file rte_bus.h.

typedef struct rte_device*(* rte_bus_find_device_t)(const struct rte_device *start, rte_dev_cmp_t cmp, const void *data)

Device iterator to find a device on a bus.

This function returns an rte_device if one of those held by the bus matches the data passed as parameter.

If the comparison function returns zero this function should stop iterating over any more devices. To continue a search the device of a previous search can be passed via the start parameter.

Parameters
cmpComparison function.
dataData to compare each device against.
startstarting point for the iteration
Returns
The first device matching the data, NULL if none exists.

Definition at line 106 of file rte_bus.h.

typedef int(* rte_bus_plug_t)(struct rte_device *dev)

Implementation specific probe function which is responsible for linking devices on that bus with applicable drivers.

Parameters
devDevice pointer that was returned by a previous call to find_device.
Returns
0 on success. !0 on error.

Definition at line 120 of file rte_bus.h.

typedef int(* rte_bus_unplug_t)(struct rte_device *dev)

Implementation specific remove function which is responsible for unlinking devices on that bus from assigned driver.

Parameters
devDevice pointer that was returned by a previous call to find_device.
Returns
0 on success. !0 on error.

Definition at line 133 of file rte_bus.h.

typedef int(* rte_bus_parse_t)(const char *name, void *addr)

Bus specific parsing function. Validates the syntax used in the textual representation of a device, If the syntax is valid and addr is not NULL, writes the bus-specific device representation to addr.

Parameters
[in]namedevice textual description
[out]addrdevice information location address, into which parsed info should be written. If NULL, nothing should be written, which is not an error.
Returns
0 if parsing was successful. !0 for any error.

Definition at line 153 of file rte_bus.h.

typedef int(* rte_bus_cmp_t)(const struct rte_bus *bus, const void *data)

Bus comparison function.

Parameters
busBus under test.
dataData to compare against.
Returns
0 if the bus matches the data. !0 if the bus does not match. <0 if ordering is possible and the bus is lower than the data. >0 if ordering is possible and the bus is greater than the data.

Definition at line 246 of file rte_bus.h.

Enumeration Type Documentation

Bus scan policies

Definition at line 158 of file rte_bus.h.

Function Documentation

TAILQ_HEAD ( rte_bus_list  ,
rte_bus   
)
void rte_bus_register ( struct rte_bus bus)

Register a Bus handler.

Parameters
busA pointer to a rte_bus structure describing the bus to be registered.
void rte_bus_unregister ( struct rte_bus bus)

Unregister a Bus handler.

Parameters
busA pointer to a rte_bus structure describing the bus to be unregistered.
int rte_bus_scan ( void  )

Scan all the buses.

Returns
0 in case of success in scanning all buses !0 in case of failure to scan
int rte_bus_probe ( void  )

For each device on the buses, perform a driver 'match' and call the driver-specific probe for device initialization.

Returns
0 for successful match/probe !0 otherwise
void rte_bus_dump ( FILE *  f)

Dump information of all the buses registered with EAL.

Parameters
fA valid and open output stream handle
struct rte_bus* rte_bus_find ( const struct rte_bus start,
rte_bus_cmp_t  cmp,
const void *  data 
)
read

Bus iterator to find a particular bus.

This function compares each registered bus to find one that matches the data passed as parameter.

If the comparison function returns zero this function will stop iterating over any more buses. To continue a search the bus of a previous search can be passed via the start parameter.

Parameters
startStarting point for the iteration.
cmpComparison function.
dataData to pass to comparison function.
Returns
A pointer to a rte_bus structure or NULL in case no bus matches
struct rte_bus* rte_bus_find_by_device ( const struct rte_device dev)
read

Find the registered bus for a particular device.

struct rte_bus* rte_bus_find_by_name ( const char *  busname)
read

Find the registered bus for a given name.