On Mon, Apr 23, 2018 at 04:54:17PM -0700, Stephen Hemminger wrote: > On Tue, 24 Apr 2018 00:41:01 +0200 > Gaetan Rivet <gaetan.ri...@6wind.com> wrote: > > > In preparation to making devargs_list private. > > > > Bus drivers generally need to access rte_devargs pertaining to their > > operations. This match is a common operation for bus drivers. > > > > Add a new accessor for the rte_devargs list. > > > > Signed-off-by: Gaetan Rivet <gaetan.ri...@6wind.com> > > --- > > lib/librte_eal/common/eal_common_devargs.c | 20 ++++++++++++++++++++ > > lib/librte_eal/common/include/rte_devargs.h | 20 ++++++++++++++++++++ > > lib/librte_eal/rte_eal_version.map | 1 + > > 3 files changed, 41 insertions(+) > > > > diff --git a/lib/librte_eal/common/eal_common_devargs.c > > b/lib/librte_eal/common/eal_common_devargs.c > > index 810b3e18f..c6c5eabcf 100644 > > --- a/lib/librte_eal/common/eal_common_devargs.c > > +++ b/lib/librte_eal/common/eal_common_devargs.c > > @@ -207,3 +207,23 @@ rte_eal_devargs_dump(FILE *f) > > devargs->name, devargs->args); > > } > > } > > + > > +/* bus-aware rte_devargs iterator. */ > > +__rte_experimental > > +struct rte_devargs * > > +rte_eal_devargs_next(const char *busname, const struct rte_devargs *start) > > +{ > > + struct rte_devargs *da; > > + > > + if (start != NULL) > > + da = TAILQ_NEXT(start, next); > > + else > > + da = TAILQ_FIRST(&devargs_list); > > + while (da != NULL) { > > + if (busname == NULL || > > + (strcmp(busname, da->bus->name) == 0)) > > + return da; > > + da = TAILQ_NEXT(da, next); > > + } > > + return NULL; > > +} > > Can this be made to return a const pointer? It seems unsymmetrical to > get the next value as a non-const pointer when passed a const based on last > value. >
I would like to, but this iterator is used in buses to match devargs and assign it to an rte_devive. The devargs field there is not const. We don't have a deprecation notice running on this. This might be worth it, though, but I think this could come after integrating this series. -- Gaëtan Rivet 6WIND