On Mon, Oct 1, 2018 at 5:17 AM Ian Abbott <abbotti@xxxxxxxxx> wrote: > > On 27/09/18 20:27, Spencer E. Olson wrote: > > Adds interface and associated unittests for accessing/looking-up/validating > > the new ni routing table information. > > > > Signed-off-by: Spencer E. Olson <olsonse@xxxxxxxxx> > > --- > > > > Changes since last submission: > > - [PATCH v2 05/13]: Tweak Makefile to build routing info for newly added > > hardware in updates to [PATCH v2 04/13]. > > - [PATCH v2 05/13]: Fixes placement of "select COMEDI_NI_ROUTING" as per Ian's > > suggestion. > > - [PATCH v2 05/13]: Removes a few inline function declarations in unit test. > > > > drivers/staging/comedi/Kconfig | 4 + > > drivers/staging/comedi/drivers/Makefile | 27 + > > drivers/staging/comedi/drivers/ni_routes.c | 521 +++++++++++++++ > > drivers/staging/comedi/drivers/ni_routes.h | 329 ++++++++++ > > drivers/staging/comedi/drivers/ni_stc.h | 4 + > > drivers/staging/comedi/drivers/tests/Makefile | 3 +- > > .../comedi/drivers/tests/ni_routes_test.c | 613 ++++++++++++++++++ > > 7 files changed, 1500 insertions(+), 1 deletion(-) > > create mode 100644 drivers/staging/comedi/drivers/ni_routes.c > > create mode 100644 drivers/staging/comedi/drivers/ni_routes.h > > create mode 100644 drivers/staging/comedi/drivers/tests/ni_routes_test.c > > > [snip] > > diff --git a/drivers/staging/comedi/drivers/ni_routes.c b/drivers/staging/comedi/drivers/ni_routes.c > > new file mode 100644 > > index 000000000000..9e999bc4f3c4 > > --- /dev/null > > +++ b/drivers/staging/comedi/drivers/ni_routes.c > [snip] > > +/* **** BEGIN Routes search routines **** */ > > +static int _ni_bsearch_destcmp(const int *key, const struct ni_route_set *elt) > > +{ > > + if (*key < elt->dest) > > + return -1; > > + else if (*key > elt->dest) > > + return 1; > > + return 0; > > +} > > + > > +static int _ni_bsearch_srccmp(const int *key, const int *elt) > > +{ > > + if (*key < *elt) > > + return -1; > > + else if (*key > *elt) > > + return 1; > > + return 0; > > +} > > Can those be changed to use 'const void *' parameters, like you did for > for the 'sort' callbacks? Yes. Done. > > > + > > +/** > > + * ni_find_route_set() - Finds the proper route set with the specified > > + * destination. > > + * @destination: Destination of which to search for the route set. > > + * @valid_routes: Pointer to device routes within which to search. > > + * > > + * Return: NULL if no route_set is found with the specified @destination; > > + * otherwise, a pointer to the route_set if found. > > + */ > > +const struct ni_route_set * > > +ni_find_route_set(const int destination, > > + const struct ni_device_routes *valid_routes) > > +{ > > + typedef int (*cmp_ftype)(const void *, const void *); > > + > > + return bsearch(&destination, valid_routes->routes, > > + valid_routes->n_route_sets, sizeof(struct ni_route_set), > > + (cmp_ftype)_ni_bsearch_destcmp); > > +} > > +EXPORT_SYMBOL_GPL(ni_find_route_set); > > + > > +/** > > + * ni_route_set_has_source() - Determines whether the given source is in > > + * included given route_set. > > + * > > + * Return: true if found; false otherwise. > > + */ > > +bool ni_route_set_has_source(const struct ni_route_set *routes, > > + const int source) > > +{ > > + typedef int (*cmp_ftype)(const void *, const void *); > > + > > + if (!bsearch(&source, routes->src, routes->n_src, sizeof(int), > > + (cmp_ftype)_ni_bsearch_srccmp)) > > + return false; > > + return true; > > +} > > +EXPORT_SYMBOL_GPL(ni_route_set_has_source); > > Then you wouldn't need those nasty '(cmp_ftype)' type casts. Good point. Should have noticed this after the last comments. Implemented and ready for re-submission. > > -- > -=( Ian Abbott <abbotti@xxxxxxxxx> || Web: www.mev.co.uk )=- > -=( MEV Ltd. is a company registered in England & Wales. )=- > -=( Registered number: 02862268. Registered address: )=- > -=( 15 West Park Road, Bramhall, STOCKPORT, SK7 3JZ, UK. )=- _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel