[dpdk-dev] [PATCH v3 03/10] bus: add helper to find bus for a particular device
Gaetan Rivet
gaetan.rivet at 6wind.com
Thu Jun 8 01:53:17 CEST 2017
From: Jan Blunck <jblunck at infradead.org>
Signed-off-by: Jan Blunck <jblunck at infradead.org>
Signed-off-by: Gaetan Rivet <gaetan.rivet at 6wind.com>
---
lib/librte_eal/bsdapp/eal/rte_eal_version.map | 1 +
lib/librte_eal/common/eal_common_bus.c | 24 ++++++++++++++++++++++++
lib/librte_eal/common/include/rte_bus.h | 5 +++++
lib/librte_eal/linuxapp/eal/rte_eal_version.map | 1 +
4 files changed, 31 insertions(+)
diff --git a/lib/librte_eal/bsdapp/eal/rte_eal_version.map b/lib/librte_eal/bsdapp/eal/rte_eal_version.map
index ed09ab2..f1a0765 100644
--- a/lib/librte_eal/bsdapp/eal/rte_eal_version.map
+++ b/lib/librte_eal/bsdapp/eal/rte_eal_version.map
@@ -163,6 +163,7 @@ DPDK_17.05 {
global:
rte_bus_find;
+ rte_bus_find_by_device;
rte_cpu_is_supported;
rte_log_dump;
rte_log_register;
diff --git a/lib/librte_eal/common/eal_common_bus.c b/lib/librte_eal/common/eal_common_bus.c
index a54aeb4..42f1076 100644
--- a/lib/librte_eal/common/eal_common_bus.c
+++ b/lib/librte_eal/common/eal_common_bus.c
@@ -156,3 +156,27 @@ rte_bus_find(rte_bus_cmp_t cmp, const void *data)
break;
return bus;
}
+
+static int
+cmp_rte_device(const struct rte_device *dev, const void *_dev2)
+{
+ const struct rte_device *dev2 = _dev2;
+
+ return !(dev == dev2);
+}
+
+static int
+bus_find_device(const struct rte_bus *bus, const void *_dev)
+{
+ struct rte_device *dev;
+
+ if (!bus->find_device)
+ return -1;
+ dev = bus->find_device(cmp_rte_device, _dev);
+ return !dev;
+}
+
+struct rte_bus *rte_bus_find_by_device(const struct rte_device *dev)
+{
+ return rte_bus_find(bus_find_device, (const void *)dev);
+}
diff --git a/lib/librte_eal/common/include/rte_bus.h b/lib/librte_eal/common/include/rte_bus.h
index e3f867f..b3bc6e8 100644
--- a/lib/librte_eal/common/include/rte_bus.h
+++ b/lib/librte_eal/common/include/rte_bus.h
@@ -182,6 +182,11 @@ typedef int (*rte_bus_cmp_t)(const struct rte_bus *bus, const void *data);
struct rte_bus *rte_bus_find(rte_bus_cmp_t cmp, const void *data);
/**
+ * Find the registered bus for a particular device.
+ */
+struct rte_bus *rte_bus_find_by_device(const struct rte_device *dev);
+
+/**
* Helper for Bus registration.
* The constructor has higher priority than PMD constructors.
*/
diff --git a/lib/librte_eal/linuxapp/eal/rte_eal_version.map b/lib/librte_eal/linuxapp/eal/rte_eal_version.map
index 6efa517..6f77222 100644
--- a/lib/librte_eal/linuxapp/eal/rte_eal_version.map
+++ b/lib/librte_eal/linuxapp/eal/rte_eal_version.map
@@ -167,6 +167,7 @@ DPDK_17.05 {
global:
rte_bus_find;
+ rte_bus_find_by_device;
rte_cpu_is_supported;
rte_intr_free_epoll_fd;
rte_log_dump;
--
2.1.4
More information about the dev
mailing list