svn commit: r338679 - head/lib/libusb
Hans Petter Selasky
hselasky at FreeBSD.org
Fri Sep 14 13:41:38 UTC 2018
Author: hselasky
Date: Fri Sep 14 13:41:37 2018
New Revision: 338679
URL: https://svnweb.freebsd.org/changeset/base/338679
Log:
Improve LibUSB debugging by simultaneously allowing both function
and transfer prints. Make sure the debug level comes from the
correct USB context.
Found by: Ludovic Rousseau <ludovic.rousseau+freebsd at gmail.com>
PR: 231264
MFC after: 1 week
Approved by: re (kib)
Sponsored by: Mellanox Technologies
Modified:
head/lib/libusb/libusb10.h
head/lib/libusb/libusb10_io.c
Modified: head/lib/libusb/libusb10.h
==============================================================================
--- head/lib/libusb/libusb10.h Fri Sep 14 01:52:34 2018 (r338678)
+++ head/lib/libusb/libusb10.h Fri Sep 14 13:41:37 2018 (r338679)
@@ -41,22 +41,24 @@
#define HOTPLUG_LOCK(ctx) pthread_mutex_lock(&(ctx)->hotplug_lock)
#define HOTPLUG_UNLOCK(ctx) pthread_mutex_unlock(&(ctx)->hotplug_lock)
-#define DPRINTF(ctx, dbg, format, args...) do { \
- if ((ctx)->debug == dbg) { \
- switch (dbg) { \
- case LIBUSB_DEBUG_FUNCTION: \
- printf("LIBUSB_FUNCTION: " \
- format "\n", ## args); \
- break; \
- case LIBUSB_DEBUG_TRANSFER: \
- printf("LIBUSB_TRANSFER: " \
- format "\n", ## args); \
- break; \
- default: \
- break; \
- } \
- } \
-} while(0)
+#define DPRINTF(ctx, dbg, format, ...) do { \
+ switch (dbg) { \
+ case LIBUSB_DEBUG_FUNCTION: \
+ if ((ctx)->debug & LIBUSB_DEBUG_FUNCTION) { \
+ printf("LIBUSB_FUNCTION: " \
+ format "\n", ## __VA_ARGS__); \
+ } \
+ break; \
+ case LIBUSB_DEBUG_TRANSFER: \
+ if ((ctx)->debug & LIBUSB_DEBUG_TRANSFER) { \
+ printf("LIBUSB_TRANSFER: " \
+ format "\n", ## __VA_ARGS__); \
+ } \
+ break; \
+ default: \
+ break; \
+ } \
+} while (0)
/* internal structures */
Modified: head/lib/libusb/libusb10_io.c
==============================================================================
--- head/lib/libusb/libusb10_io.c Fri Sep 14 01:52:34 2018 (r338678)
+++ head/lib/libusb/libusb10_io.c Fri Sep 14 13:41:37 2018 (r338679)
@@ -489,13 +489,26 @@ libusb_control_transfer(libusb_device_handle *devh,
return (actlen);
}
+static libusb_context *
+libusb10_get_context_by_device_handle(libusb_device_handle *devh)
+{
+ libusb_context *ctx;
+
+ if (devh != NULL)
+ ctx = libusb_get_device(devh)->ctx;
+ else
+ ctx = NULL;
+
+ return (GET_CONTEXT(ctx));
+}
+
static void
libusb10_do_transfer_cb(struct libusb_transfer *transfer)
{
libusb_context *ctx;
int *pdone;
- ctx = GET_CONTEXT(NULL);
+ ctx = libusb10_get_context_by_device_handle(transfer->dev_handle);
DPRINTF(ctx, LIBUSB_DEBUG_TRANSFER, "sync I/O done");
@@ -585,7 +598,8 @@ libusb_bulk_transfer(libusb_device_handle *devh,
libusb_context *ctx;
int ret;
- ctx = GET_CONTEXT(NULL);
+ ctx = libusb10_get_context_by_device_handle(devh);
+
DPRINTF(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_bulk_transfer enter");
ret = libusb10_do_transfer(devh, endpoint, data, length, transferred,
@@ -603,7 +617,8 @@ libusb_interrupt_transfer(libusb_device_handle *devh,
libusb_context *ctx;
int ret;
- ctx = GET_CONTEXT(NULL);
+ ctx = libusb10_get_context_by_device_handle(devh);
+
DPRINTF(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_interrupt_transfer enter");
ret = libusb10_do_transfer(devh, endpoint, data, length, transferred,
More information about the svn-src-all
mailing list