bus/vdev: implement method to find device
authorJan Blunck <jblunck@infradead.org>
Fri, 30 Jun 2017 18:19:32 +0000 (20:19 +0200)
committerThomas Monjalon <thomas@monjalon.net>
Mon, 3 Jul 2017 23:08:17 +0000 (01:08 +0200)
Signed-off-by: Jan Blunck <jblunck@infradead.org>
Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
lib/librte_eal/common/eal_common_vdev.c

index b4db2be..9bb7427 100644 (file)
@@ -35,6 +35,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdint.h>
+#include <stdbool.h>
 #include <sys/queue.h>
 
 #include <rte_eal.h>
@@ -334,9 +335,29 @@ vdev_probe(void)
        return 0;
 }
 
+static struct rte_device *
+vdev_find_device(const struct rte_device *start, rte_dev_cmp_t cmp,
+                const void *data)
+{
+       struct rte_vdev_device *dev;
+       bool start_found = !start;
+
+       TAILQ_FOREACH(dev, &vdev_device_list, next) {
+               if (start_found == 0) {
+                       if (&dev->device == start)
+                               start_found = 1;
+                       continue;
+               }
+               if (cmp(&dev->device, data) == 0)
+                       return &dev->device;
+       }
+       return NULL;
+}
+
 static struct rte_bus rte_vdev_bus = {
        .scan = vdev_scan,
        .probe = vdev_probe,
+       .find_device = vdev_find_device,
 };
 
 RTE_REGISTER_BUS(VIRTUAL_BUS_NAME, rte_vdev_bus);