From owner-p4-projects@FreeBSD.ORG Sun Jun 14 20:30:15 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 7BE4A106568A; Sun, 14 Jun 2009 20:30:15 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 31D73106564A for ; Sun, 14 Jun 2009 20:30:15 +0000 (UTC) (envelope-from syl@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 1F2638FC15 for ; Sun, 14 Jun 2009 20:30:15 +0000 (UTC) (envelope-from syl@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n5EKUFCP074464 for ; Sun, 14 Jun 2009 20:30:15 GMT (envelope-from syl@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n5EKUFDa074462 for perforce@freebsd.org; Sun, 14 Jun 2009 20:30:15 GMT (envelope-from syl@FreeBSD.org) Date: Sun, 14 Jun 2009 20:30:15 GMT Message-Id: <200906142030.n5EKUFDa074462@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to syl@FreeBSD.org using -f From: Sylvestre Gallon To: Perforce Change Reviews Cc: Subject: PERFORCE change 164376 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 14 Jun 2009 20:30:16 -0000 http://perforce.freebsd.org/chv.cgi?CH=164376 Change 164376 by syl@syl_atuin on 2009/06/14 20:29:47 Add debug for libusb10.c and libusb10_desc.c. Affected files ... .. //depot/projects/soc2009/syl_usb/libusb-tests/descriptors/test1/test1.c#3 edit .. //depot/projects/soc2009/syl_usb/src/lib/libusb/libusb.h#10 edit .. //depot/projects/soc2009/syl_usb/src/lib/libusb/libusb10.c#33 edit .. //depot/projects/soc2009/syl_usb/src/lib/libusb/libusb10.h#6 edit .. //depot/projects/soc2009/syl_usb/src/lib/libusb/libusb10_desc.c#15 edit Differences ... ==== //depot/projects/soc2009/syl_usb/libusb-tests/descriptors/test1/test1.c#3 (text+ko) ==== @@ -26,6 +26,7 @@ fprintf(stderr, "libusb_init failed\n"); return (EXIT_FAILURE); } + printf("debug %i\n", ctx->debug); if ((ret = libusb_get_device_list(ctx, &devs_list)) < 0) { fprintf(stderr,"libusb_get_device_list failed with 0x%x error code\n", @@ -33,6 +34,7 @@ return (EXIT_FAILURE); } + perror("toto\n"); if (ret == 0) { fprintf(stderr, "No device match or lack of permissions.\n"); return (EXIT_SUCCESS); ==== //depot/projects/soc2009/syl_usb/src/lib/libusb/libusb.h#10 (text+ko) ==== @@ -176,6 +176,10 @@ LIBUSB_TRANSFER_FREE_TRANSFER = 1 << 2, }; +enum libusb_debug_level { + LIBUSB_DEBUG_FUNCTION=1, +}; + /* libusb structures */ typedef void (*libusb_pollfd_added_cb) (int fd, short events, void *user_data); ==== //depot/projects/soc2009/syl_usb/src/lib/libusb/libusb10.c#33 (text+ko) ==== @@ -111,7 +111,7 @@ } pthread_mutex_lock(&default_context_lock); - if (!usbi_default_context) { + if (usbi_default_context == NULL) { usbi_default_context = ctx; } pthread_mutex_unlock(&default_context_lock); @@ -127,6 +127,7 @@ { GET_CONTEXT(ctx); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_exit enter"); usb_remove_pollfd(ctx, ctx->ctrl_pipe[0]); close(ctx->ctrl_pipe[0]); close(ctx->ctrl_pipe[1]); @@ -138,6 +139,7 @@ pthread_mutex_unlock(&default_context_lock); free(ctx); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_exit leave"); } /* Device handling and initialisation. */ @@ -152,6 +154,8 @@ int i; GET_CONTEXT(ctx); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_get_device_list enter"); + usb_backend = libusb20_be_alloc_default(); if (usb_backend == NULL) return (-1); @@ -203,6 +207,7 @@ (*list)[i] = NULL; libusb20_be_free(usb_backend); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_get_device_list leave"); return (i); } @@ -214,6 +219,10 @@ libusb_free_device_list(libusb_device **list, int unref_devices) { int i; + libusb_context *ctx; + + GET_CONTEXT(ctx); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_free_device_list enter"); if (list == NULL) return ; @@ -223,21 +232,34 @@ libusb_unref_device(list[i]); } free(list); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_free_device_list leave"); } uint8_t libusb_get_bus_number(libusb_device * dev) { + libusb_context *ctx; + + GET_CONTEXT(ctx); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_get_bus_number enter"); + if (dev == NULL) return (LIBUSB_ERROR_NO_DEVICE); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_get_bus_number leave"); return (dev->bus_number); } uint8_t libusb_get_device_address(libusb_device * dev) { + libusb_context *ctx; + + GET_CONTEXT(ctx); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_get_device_address enter"); + if (dev == NULL) return (LIBUSB_ERROR_NO_DEVICE); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_get_device_address leave"); return (dev->device_address); } @@ -248,8 +270,12 @@ struct libusb_interface *pinf; struct libusb_interface_descriptor *pdinf; struct libusb_endpoint_descriptor *pdend; + libusb_context *ctx; int i, j, k, ret; + GET_CONTEXT(ctx); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_get_max_packet_size enter"); + if (dev == NULL) return (LIBUSB_ERROR_NO_DEVICE); @@ -273,12 +299,18 @@ out: libusb_free_config_descriptor(pdconf); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_get_max_packet_size leave"); return (ret); } libusb_device * libusb_ref_device(libusb_device * dev) { + libusb_context *ctx; + + GET_CONTEXT(ctx); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_ref_device enter"); + if (dev == NULL) return (NULL); @@ -286,12 +318,18 @@ dev->refcnt++; pthread_mutex_unlock(&dev->lock); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_ref_device leave"); return (dev); } void libusb_unref_device(libusb_device * dev) { + libusb_context *ctx; + + GET_CONTEXT(ctx); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_unref_device enter"); + if (dev == NULL) return; @@ -307,6 +345,7 @@ libusb20_dev_free(dev->os_priv); free(dev); } + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_unref_device leave"); } int @@ -318,6 +357,9 @@ unsigned char dummy; int err; + GET_CONTEXT(ctx); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_open enter"); + dummy = 1; if (devh == NULL) return (LIBUSB_ERROR_INVALID_PARAM); @@ -369,6 +411,7 @@ pthread_mutex_unlock(&ctx->pollfd_modify_lock); libusb_unlock_events(ctx); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_open leave"); return (0); } @@ -382,6 +425,9 @@ struct LIBUSB20_DEVICE_DESC_DECODED *pdesc; int i, j; + GET_CONTEXT(ctx); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_open_device_width_vid_pid enter"); + devh = NULL; if ((i = libusb_get_device_list(ctx, &devs)) < 0) @@ -397,6 +443,7 @@ } libusb_free_device_list(devs, 1); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_open_device_width_vid_pid leave"); return (devh); } @@ -414,6 +461,9 @@ ctx = devh->dev->ctx; pdev = devh->os_priv; + GET_CONTEXT(ctx); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_close enter"); + pthread_mutex_lock(&ctx->pollfd_modify_lock); ctx->pollfd_modify++; pthread_mutex_unlock(&ctx->pollfd_modify_lock); @@ -452,26 +502,39 @@ pthread_mutex_unlock(&ctx->pollfd_modify_lock); libusb_unlock_events(ctx); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_close leave"); } libusb_device * libusb_get_device(libusb_device_handle * devh) { + libusb_context *ctx; + + GET_CONTEXT(ctx); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_get_device enter"); + if (devh == NULL) return (NULL); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_get_device leave"); return (devh->dev); } int libusb_get_configuration(libusb_device_handle * devh, int *config) { + libusb_context *ctx; + + GET_CONTEXT(ctx); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_get_configuration enter"); + if (devh == NULL || config == NULL) return (LIBUSB_ERROR_INVALID_PARAM); *config = libusb20_dev_get_config_index((struct libusb20_device *) devh->dev->os_priv); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_get_configuration leave"); return (0); } @@ -483,7 +546,11 @@ libusb_set_configuration(libusb_device_handle * devh, int configuration) { struct libusb20_device *pdev; + libusb_context *ctx; + GET_CONTEXT(ctx); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_set_configuration enter"); + if (devh == NULL) return (LIBUSB_ERROR_INVALID_PARAM); @@ -491,14 +558,19 @@ libusb20_dev_set_alt_index(pdev, libusb20_dev_get_config_index(pdev), configuration); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_set_configuration leave"); return (0); } int libusb_claim_interface(libusb_device_handle * dev, int interface_number) { + libusb_context *ctx; int ret = 0; + GET_CONTEXT(ctx); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_claim_interface enter"); + if (dev == NULL) return (LIBUSB_ERROR_INVALID_PARAM); @@ -513,14 +585,19 @@ dev->claimed_interfaces |= (1 << interface_number); pthread_mutex_unlock(&(dev->lock)); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_claim_interface leave"); return (ret); } int libusb_release_interface(libusb_device_handle * dev, int interface_number) { + libusb_context *ctx; int ret; + GET_CONTEXT(ctx); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_release_interface enter"); + ret = 0; if (dev == NULL) return (LIBUSB_ERROR_INVALID_PARAM); @@ -536,6 +613,7 @@ dev->claimed_interfaces &= ~(1 << interface_number); pthread_mutex_unlock(&(dev->lock)); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_release_interface leave"); return (ret); } @@ -543,8 +621,12 @@ libusb_set_interface_alt_setting(libusb_device_handle * dev, int interface_number, int alternate_setting) { + libusb_context *ctx; int ret; + GET_CONTEXT(ctx); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_set_interface_alt_setting enter"); + if (dev == NULL) return (LIBUSB_ERROR_INVALID_PARAM); @@ -562,6 +644,7 @@ alternate_setting) != 0) return (LIBUSB_ERROR_OTHER); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_set_interface_alt_setting leave"); return (0); } @@ -569,8 +652,12 @@ libusb_clear_halt(libusb_device_handle * devh, unsigned char endpoint) { struct libusb20_transfer *xfer; + libusb_context *ctx; int ret; + GET_CONTEXT(ctx); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_clear_halt enter"); + GET_XFER(xfer, endpoint, devh->os_priv); pthread_mutex_lock(&libusb20_lock); @@ -584,25 +671,39 @@ if (ret == 0) /* check if we have open the device */ libusb20_tr_close(xfer); pthread_mutex_unlock(&libusb20_lock); + + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_clear_halt leave"); return (0); } int libusb_reset_device(libusb_device_handle * dev) { + libusb_context *ctx; + + GET_CONTEXT(ctx); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_reset_device enter"); + if (dev == NULL) return (LIBUSB20_ERROR_INVALID_PARAM); libusb20_dev_reset(dev->os_priv); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_reset_device leave"); return (0); } int libusb_kernel_driver_active(libusb_device_handle * devh, int interface) { + libusb_context *ctx; + + GET_CONTEXT(ctx); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_kernel_driver_active enter"); + if (devh == NULL) return (LIBUSB_ERROR_INVALID_PARAM); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_kernel_driver_active leave"); return (libusb20_dev_kernel_driver_active(devh->os_priv, interface)); } @@ -610,6 +711,10 @@ libusb_detach_kernel_driver(libusb_device_handle * devh, int interface) { struct libusb20_device *pdev; + libusb_context *ctx; + + GET_CONTEXT(ctx); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_detach_kernel_driver enter"); if (devh == NULL) return (LIBUSB_ERROR_INVALID_PARAM); @@ -617,6 +722,8 @@ pdev = (struct libusb20_device *)devh->dev->os_priv; if (libusb20_dev_detach_kernel_driver(pdev, interface) == LIBUSB20_ERROR_OTHER) return (LIBUSB_ERROR_OTHER); + + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_detach_kernel_driver leave"); return (0); } @@ -627,8 +734,15 @@ int libusb_attach_kernel_driver(libusb_device_handle * devh, int interface) { + libusb_context *ctx; + + GET_CONTEXT(ctx); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_attach_kernel_driver enter"); + if (devh == NULL) return (LIBUSB_ERROR_INVALID_PARAM); + + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_attach_kernel_driver leave"); return (0); } @@ -639,8 +753,12 @@ { struct libusb_transfer *xfer; struct usb_transfer *bxfer; + libusb_context *ctx; int len; + GET_CONTEXT(ctx); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_alloc_transfer enter"); + len = sizeof(struct libusb_transfer) + sizeof(struct usb_transfer) + (iso_packets * sizeof(libusb_iso_packet_descriptor)); @@ -654,6 +772,8 @@ xfer = (struct libusb_transfer *) ((uint8_t *)bxfer + sizeof(struct usb_transfer)); + + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_alloc_transfer leave"); return (xfer); } @@ -661,7 +781,11 @@ libusb_free_transfer(struct libusb_transfer *xfer) { struct usb_transfer *bxfer; + libusb_context *ctx; + GET_CONTEXT(ctx); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_free_transfer enter"); + if (xfer == NULL) return ; @@ -674,6 +798,7 @@ free(xfer->user_data); free(bxfer); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_free_transfer leave"); return; } @@ -719,10 +844,10 @@ if (usb_xfer->num_iso_packets > iso_packets) usb_xfer->num_iso_packets = iso_packets; for (i = 0 ; i < usb_xfer->num_iso_packets ; i++) { - libusb20_tr_setup_isoc(usb_xfer, + libusb20_tr_setup_isoc(xfer, usb_xfer->buffer, usb_xfer->length, i); } - libusb20_tr_set_total_frames(i); + libusb20_tr_set_total_frames(xfer, i); break ; case LIBUSB_TRANSFER_TYPE_BULK: libusb20_tr_setup_bulk(xfer, usb_xfer->buffer, @@ -865,6 +990,8 @@ ctx = xfer->dev_handle->dev->ctx; pdev = xfer->dev_handle->os_priv; + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_submit_transfer enter"); + usb_backend = (struct usb_transfer *) ((uint8_t *)xfer - sizeof(struct usb_transfer)); usb_backend->transferred = 0; @@ -950,12 +1077,18 @@ pthread_mutex_unlock(&libusb20_lock); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_submit_transfer leave"); return (0); } int libusb_cancel_transfer(struct libusb_transfer *xfer) { + libusb_context *ctx; + + GET_CONTEXT(ctx); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_cancel_transfer enter"); + if (xfer == NULL) return (LIBUSB_ERROR_NO_MEM); @@ -964,6 +1097,7 @@ libusb20_tr_close(xfer->os_priv); pthread_mutex_unlock(&libusb20_lock); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_cancel_transfer leave"); return (0); } ==== //depot/projects/soc2009/syl_usb/src/lib/libusb/libusb10.h#6 (text+ko) ==== @@ -83,6 +83,20 @@ #define MAX(a,b) (((a)>(b))?(a):(b)) #define USB_TIMED_OUT (1<<0) +static inline void +dprintf(libusb_context *ctx, int debug, char *str) +{ + switch (ctx->debug) { + case LIBUSB_DEBUG_FUNCTION: + printf("LIBUSB FUNCTION : %s\n", str); + break ; + default: + printf("LIBUSB UNKNOW DEBUG\n"); + break ; + } + return ; +} + struct usb_pollfd { struct libusb_pollfd pollfd; struct list_head list; ==== //depot/projects/soc2009/syl_usb/src/lib/libusb/libusb10_desc.c#15 (text+ko) ==== @@ -32,6 +32,7 @@ #include "libusb20_desc.h" #include "libusb20_int.h" #include "libusb.h" +#include "libusb10.h" /* USB descriptors */ @@ -41,6 +42,10 @@ { struct LIBUSB20_DEVICE_DESC_DECODED *pdesc; struct libusb20_device *pdev; + libusb_context *ctx; + + GET_CONTEXT(ctx); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_get_device_descriptor enter"); if ((dev == NULL) || (desc == NULL)) return (LIBUSB_ERROR_INVALID_PARAM); @@ -63,6 +68,7 @@ desc->iSerialNumber = pdesc->iSerialNumber; desc->bNumConfigurations = pdesc->bNumConfigurations; + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_get_device_descriptor leave"); return (0); } @@ -71,11 +77,16 @@ struct libusb_config_descriptor **config) { struct libusb20_device *pdev; + libusb_context *ctx; uint8_t idx; + GET_CONTEXT(ctx); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_get_active_config_descriptor enter"); + pdev = dev->os_priv; idx = libusb20_dev_get_config_index(pdev); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_get_active_config_descriptor leave"); return (libusb_get_config_descriptor(dev, idx, config)); } @@ -93,9 +104,13 @@ struct libusb20_endpoint *pend; libusb_interface_descriptor *ifd; libusb_endpoint_descriptor *endd; + libusb_context *ctx; uint8_t nif, nend, nalt, i, j, k; uint32_t if_idx, endp_idx; + GET_CONTEXT(ctx); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_get_config_descriptor enter"); + if (dev == NULL || config == NULL) return (LIBUSB_ERROR_INVALID_PARAM); @@ -206,6 +221,7 @@ } free(pconf); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_get_config_descriptor leave"); return (0); } @@ -216,8 +232,11 @@ struct LIBUSB20_DEVICE_DESC_DECODED *pdesc; struct libusb20_device *pdev; struct libusb20_config *pconf; + libusb_context *ctx; int i; + GET_CONTEXT(ctx); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_get_config_descriptor_by_value enter"); if (dev == NULL || config == NULL) return (LIBUSB_ERROR_INVALID_PARAM); @@ -234,13 +253,20 @@ free(pconf); } + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_get_config_descriptor_by_value leave"); return (LIBUSB_ERROR_NOT_FOUND); } void libusb_free_config_descriptor(struct libusb_config_descriptor *config) { + libusb_context *ctx; + + GET_CONTEXT(ctx); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_free_config_descriptor enter"); + free(config); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_free_config_descriptor leave"); } int @@ -248,14 +274,20 @@ uint8_t desc_index, unsigned char *data, int length) { struct libusb20_device *pdev; + libusb_context *ctx; int ret; + GET_CONTEXT(ctx); + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_get_string_descriptor_ascii enter"); + if (dev == NULL || data == NULL) return (LIBUSB20_ERROR_INVALID_PARAM); pdev = dev->os_priv; + dprintf(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_get_string_descriptor_ascii leave"); if (libusb20_dev_req_string_simple_sync(pdev, desc_index, data, length) == 0) return (strlen(data)); + return (LIBUSB_ERROR_OTHER); }