X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;ds=sidebyside;f=lib%2Flibrte_eal%2Fcommon%2Finclude%2Frte_devargs.h;h=88120a1cf773527dff3ab8468dd91c8647a0db6e;hb=70a969503bfcc2e8b0dd9fa71dae310c5358c9bc;hp=c093c171b7fb6957a54582a357d2cd720032d307;hpb=a8b97e3a1db0a9366d58811411b904e4fef8160f;p=dpdk.git diff --git a/lib/librte_eal/common/include/rte_devargs.h b/lib/librte_eal/common/include/rte_devargs.h index c093c171b7..88120a1cf7 100644 --- a/lib/librte_eal/common/include/rte_devargs.h +++ b/lib/librte_eal/common/include/rte_devargs.h @@ -48,6 +48,7 @@ extern "C" { #endif +#include #include #include @@ -75,6 +76,7 @@ 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 { @@ -85,10 +87,10 @@ struct rte_devargs { struct { /** Driver name. */ char drv_name[32]; - } virtual; + } virt; }; -#define RTE_DEVARGS_LEN 256 - char args[RTE_DEVARGS_LEN]; /**< Arguments string as given by user. */ + /** Arguments string as given by user or "" for no argument. */ + char *args; }; /** user device double-linked queue type definition */ @@ -97,6 +99,34 @@ TAILQ_HEAD(rte_devargs_list, rte_devargs); /** Global list of user devices */ extern struct rte_devargs_list devargs_list; +/** + * Parse a devargs string. + * + * For PCI devices, the format of arguments string is "PCI_ADDR" or + * "PCI_ADDR,key=val,key2=val2,...". Examples: "08:00.1", "0000:5:00.0", + * "04:00.0,arg=val". + * + * For virtual devices, the format of arguments string is "DRIVER_NAME*" + * or "DRIVER_NAME*,key=val,key2=val2,...". Examples: "net_ring", + * "net_ring0", "net_pmdAnything,arg=0:arg2=1". + * + * The function parses the arguments string to get driver name and driver + * arguments. + * + * @param devargs_str + * The arguments as given by the user. + * @param drvname + * The pointer to the string to store parsed driver name. + * @param drvargs + * The pointer to the string to store parsed driver arguments. + * + * @return + * - 0 on success + * - A negative value on error + */ +int rte_eal_parse_devargs_str(const char *devargs_str, + char **drvname, char **drvargs); + /** * Add a device to the user device list * @@ -105,14 +135,14 @@ extern struct rte_devargs_list devargs_list; * "04:00.0,arg=val". * * For virtual devices, the format of arguments string is "DRIVER_NAME*" - * or "DRIVER_NAME*,key=val,key2=val2,...". Examples: "eth_ring", - * "eth_ring0", "eth_pmdAnything,arg=0:arg2=1". The validity of the + * or "DRIVER_NAME*,key=val,key2=val2,...". Examples: "net_ring", + * "net_ring0", "net_pmdAnything,arg=0:arg2=1". The validity of the * driver name is not checked by this function, it is done when probing * the drivers. * * @param devtype * The type of the device. - * @param devargs_list + * @param devargs_str * The arguments as given by the user. * * @return @@ -135,8 +165,11 @@ rte_eal_devargs_type_count(enum rte_devtype devtype); /** * This function dumps the list of user device and their arguments. + * + * @param f + * A pointer to a file for output */ -void rte_eal_devargs_dump(void); +void rte_eal_devargs_dump(FILE *f); #ifdef __cplusplus }