pci: introduce PCI address parsing function
authorGaetan Rivet <gaetan.rivet@6wind.com>
Thu, 26 Oct 2017 10:05:59 +0000 (12:05 +0200)
committerThomas Monjalon <thomas@monjalon.net>
Thu, 26 Oct 2017 21:17:31 +0000 (23:17 +0200)
A new single function that is able to parse all currently supported
format:

   * Domain-Bus-Device-Function
   *        Bus-Device-Function

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
lib/librte_eal/common/eal_common_pci.c
lib/librte_eal/common/include/rte_pci.h
lib/librte_eal/rte_eal_version.map

index 2230e09..d01b0f9 100644 (file)
@@ -199,6 +199,15 @@ rte_eal_compare_pci_addr(const struct rte_pci_addr *addr,
        return rte_pci_addr_cmp(addr, addr2);
 }
 
+int
+rte_pci_addr_parse(const char *str, struct rte_pci_addr *addr)
+{
+       if (rte_pci_bdf_parse(str, addr) == 0 ||
+           rte_pci_dbdf_parse(str, addr) == 0)
+               return 0;
+       return -1;
+}
+
 void
 pci_name_set(struct rte_pci_device *dev)
 {
index 9ac19d5..11ba442 100644 (file)
@@ -346,6 +346,20 @@ int rte_pci_addr_cmp(const struct rte_pci_addr *addr,
 int rte_eal_compare_pci_addr(const struct rte_pci_addr *addr,
                             const struct rte_pci_addr *addr2);
 
+/**
+ * Utility function to parse a string into a PCI location.
+ *
+ * @param str
+ *     The string to parse
+ * @param addr
+ *     The reference to the structure where the location
+ *     is stored.
+ * @return
+ *     0 on success
+ *     <0 otherwise
+ */
+int rte_pci_addr_parse(const char *str, struct rte_pci_addr *addr);
+
 /**
  * Scan the content of the PCI bus, and the devices in the devices
  * list
index 5cad972..3568694 100644 (file)
@@ -254,6 +254,7 @@ DPDK_17.11 {
        rte_lcore_has_role;
        rte_memcpy_ptr;
        rte_pci_addr_cmp;
+       rte_pci_addr_parse;
        rte_pci_bdf_parse;
        rte_pci_dbdf_parse;
        rte_pci_device_name;