ethdev: add iterator to match devargs input
authorThomas Monjalon <thomas@monjalon.net>
Tue, 23 Oct 2018 08:28:37 +0000 (10:28 +0200)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 26 Oct 2018 20:14:05 +0000 (22:14 +0200)
commit214ed1acd1256936bb74b26ea499f767e81404db
treee1680debadf677dc8926056dca474eafce2f8fa0
parent2c29f879f2e06a792b5ee280cb0fe522d924f5b0
ethdev: add iterator to match devargs input

The iterator will return the ethdev port ids matching a devargs string.
It is recommended to use the macro RTE_ETH_FOREACH_MATCHING_DEV()
for usage convenience.

The class string is prefixed with '+' in order to skip the validation
of the parameter keys. It is tolerated for the compatibility with
the old (current) syntax where all parameters (bus, class and driver)
are mixed in the same string without any delimiter.
Thanks to this compatibility prefix, the driver parameters will be
skipped during the ethdev parsing, and not considered invalid.

A macro is introduced in rte_common.h to workaround a const field.
This hack is needed to free const strings in the iterator.
It is preferred to keep the const for these fields, because it gives
a hint that they are not changed at each iteration.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Reviewed-by: Andrew Rybchenko <arybchenko@solarflare.com>
lib/librte_eal/common/include/rte_common.h
lib/librte_ethdev/ethdev_private.c
lib/librte_ethdev/ethdev_private.h
lib/librte_ethdev/rte_class_eth.c
lib/librte_ethdev/rte_ethdev.c
lib/librte_ethdev/rte_ethdev.h
lib/librte_ethdev/rte_ethdev_version.map