[dpdk-dev] [PATCH v2 00/18] Device querying
Bruce Richardson
bruce.richardson at intel.com
Thu Mar 22 12:31:51 CET 2018
On Wed, Mar 21, 2018 at 06:15:21PM +0100, Gaetan Rivet wrote:
> This patchset introduces a new EAL API for querying devices,
> filtered by arbitrary properties.
>
> The following elements are introduced to this end:
>
> * A new object, "rte_class", is used to describe
> the device class abstraction layer (eth, crypto, ...).
>
> * Both rte_bus and rte_class now offer a way to
> list their devices and filter the result
> using locally defined properties.
>
> * The rte_dev API now has an rte_dev_iterator, which
> is the way for the user to define the device filter
> and iterate upon the resulting set.
>
> As an example, the "eth" device class is implemented.
>
> Additionally, the device filters for
>
> + rte_bus_pci
> + rte_bus_vdev
> + rte_class_eth
>
> are implemented and can be used with some
> properties each, to show how to extend those.
>
> Some example of filters:
>
> "bus=pci/class=eth"
> "bus=pci"
> "class=eth"
> "class=eth,name=net_ring0"
> "bus=pci,id=00:00.0"
> "bus=vdev,driver=net_ring"
>
> ---
>
> v2:
>
> * Reworked the dev_iterate callback to simplify
> its implementation.
>
> Now dev_iterate implementation do not need to learn
> about the intricacies of the rte_dev_iterator.
> The rte_dev_iterator is managed purely by the
> rte_dev_iterator_next function. Buses and classes then
> do not have to care about settings things right.
>
> Additionally, dev_iterate implementations do not
> have to sanitize their dev string anymore, they
> are prepared by the rte_dev layer prior, which also
> reduces the number of dynamic allocations.
>
> Gaetan Rivet (18):
> eal: introduce dtor macros
> eal: introduce device class abstraction
> eal/class: register destructor
> eal: add lightweight kvarg parsing utility
> eal/dev: add device iterator interface
> eal/class: add device iteration
> eal/bus: add device iteration
> eal/dev: implement device iteration initialization
> eal/dev: implement device iteration
> bus/pci: fix find device implementation
> bus/pci: implement device iteration and comparison
> bus/pci: add device matching field id
> bus/vdev: fix find device implementation
> bus/vdev: implement device iteration
> bus/vdev: add device matching field driver
> ethdev: register ether layer as a class
> ethdev: add device matching field name
> app/testpmd: add show device command
>
> app/test-pmd/cmdline.c | 52 ++++++
> drivers/bus/pci/Makefile | 2 +-
> drivers/bus/pci/pci_common.c | 77 ++++++++-
> drivers/bus/pci/rte_bus_pci.h | 3 +
> drivers/bus/vdev/Makefile | 2 +-
> drivers/bus/vdev/rte_bus_vdev.h | 3 +
> drivers/bus/vdev/vdev.c | 66 +++++++-
> lib/Makefile | 2 +-
> lib/librte_eal/bsdapp/eal/Makefile | 1 +
> lib/librte_eal/common/Makefile | 2 +-
> lib/librte_eal/common/eal_common_class.c | 62 +++++++
> lib/librte_eal/common/eal_common_dev.c | 255 +++++++++++++++++++++++++++++
> lib/librte_eal/common/eal_private.h | 34 ++++
> lib/librte_eal/common/include/rte_bus.h | 1 +
> lib/librte_eal/common/include/rte_class.h | 127 ++++++++++++++
> lib/librte_eal/common/include/rte_common.h | 23 +++
> lib/librte_eal/common/include/rte_dev.h | 95 +++++++++++
> lib/librte_eal/linuxapp/eal/Makefile | 1 +
> lib/librte_eal/rte_eal_version.map | 4 +
> lib/librte_ether/Makefile | 3 +-
> lib/librte_ether/rte_class_eth.c | 79 +++++++++
> 21 files changed, 875 insertions(+), 19 deletions(-)
> create mode 100644 lib/librte_eal/common/eal_common_class.c
> create mode 100644 lib/librte_eal/common/include/rte_class.h
> create mode 100644 lib/librte_ether/rte_class_eth.c
>
Not seeing any meson.build files in the list above, but plenty of
makefiles. :-)
More information about the dev
mailing list