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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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?

+
+/**
+ * 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.

--
-=( 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



[Index of Archives]     [Linux Driver Backports]     [DMA Engine]     [Linux GPIO]     [Linux SPI]     [Video for Linux]     [Linux USB Devel]     [Linux Coverity]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux