New upstream version 17.08
[deb_dpdk.git] / lib / librte_eal / common / include / rte_devargs.h
index 88120a1..58d585d 100644 (file)
@@ -50,7 +50,7 @@ extern "C" {
 
 #include <stdio.h>
 #include <sys/queue.h>
-#include <rte_pci.h>
+#include <rte_bus.h>
 
 /**
  * Type of generic device
@@ -76,19 +76,12 @@ struct rte_devargs {
        TAILQ_ENTRY(rte_devargs) next;
        /** Type of device. */
        enum rte_devtype type;
-       RTE_STD_C11
-       union {
-               /** Used if type is RTE_DEVTYPE_*_PCI. */
-               struct {
-                       /** PCI location. */
-                       struct rte_pci_addr addr;
-               } pci;
-               /** Used if type is RTE_DEVTYPE_VIRTUAL. */
-               struct {
-                       /** Driver name. */
-                       char drv_name[32];
-               } virt;
-       };
+       /** Device policy. */
+       enum rte_dev_policy policy;
+       /** Bus handle for the device. */
+       struct rte_bus *bus;
+       /** Name of the device. */
+       char name[RTE_DEV_NAME_MAX_LEN];
        /** Arguments string as given by user or "" for no argument. */
        char *args;
 };
@@ -127,6 +120,39 @@ extern struct rte_devargs_list devargs_list;
 int rte_eal_parse_devargs_str(const char *devargs_str,
                                char **drvname, char **drvargs);
 
+/**
+ * Parse a device string.
+ *
+ * Verify that a bus is capable of handling the device passed
+ * in argument. Store which bus will handle the device, its name
+ * and the eventual device parameters.
+ *
+ * @param dev
+ *   The device declaration string.
+ * @param da
+ *   The devargs structure holding the device information.
+ *
+ * @return
+ *   - 0 on success.
+ *   - Negative errno on error.
+ */
+int
+rte_eal_devargs_parse(const char *dev,
+                     struct rte_devargs *da);
+
+/**
+ * Insert an rte_devargs in the global list.
+ *
+ * @param da
+ *  The devargs structure to insert.
+ *
+ * @return
+ *   - 0 on success
+ *   - Negative on error.
+ */
+int
+rte_eal_devargs_insert(struct rte_devargs *da);
+
 /**
  * Add a device to the user device list
  *
@@ -151,6 +177,24 @@ int rte_eal_parse_devargs_str(const char *devargs_str,
  */
 int rte_eal_devargs_add(enum rte_devtype devtype, const char *devargs_str);
 
+/**
+ * Remove a device from the user device list.
+ * Its resources are freed.
+ * If the devargs cannot be found, nothing happens.
+ *
+ * @param busname
+ *   bus name of the devargs to remove.
+ *
+ * @param devname
+ *   device name of the devargs to remove.
+ *
+ * @return
+ *   0 on success.
+ *   <0 on error.
+ *   >0 if the devargs was not within the user device list.
+ */
+int rte_eal_devargs_remove(const char *busname, const char *devname);
+
 /**
  * Count the number of user devices of a specified type
  *