[PATCH v2 05/13] staging: comedi: add interface to ni routing table information

Spencer Olson olsonse at umich.edu
Mon Oct 1 19:24:21 UTC 2018


On Mon, Oct 1, 2018 at 5:17 AM Ian Abbott <abbotti at mev.co.uk> 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 at umich.edu>
> > ---
> >
> > 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 at mev.co.uk> || 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. )=-


More information about the devel mailing list