PERFORCE change 166128 for review

Hans Petter Selasky hselasky at FreeBSD.org
Wed Jul 15 11:35:06 UTC 2009


http://perforce.freebsd.org/chv.cgi?CH=166128

Change 166128 by hselasky at hselasky_laptop001 on 2009/07/15 11:34:09

	
	LibUSB v1.0:
	 - update header files.

Affected files ...

.. //depot/projects/usb/src/lib/libusb/libusb.h#7 edit
.. //depot/projects/usb/src/lib/libusb/libusb10.h#6 edit

Differences ...

==== //depot/projects/usb/src/lib/libusb/libusb.h#7 (text+ko) ====

@@ -29,7 +29,6 @@
 #include <sys/time.h>
 #include <sys/types.h>
 #include <sys/endian.h>
-#include <sys/queue.h>
 
 #include <stdint.h>
 #include <time.h>
@@ -180,95 +179,25 @@
 	LIBUSB_DEBUG_TRANSFER=2,
 };
 
-/* internal structures */
+/* libusb structures */
+
+struct libusb_context;
+struct libusb_device;
+struct libusb_transfer;
+struct libusb20_device;
 
-typedef struct libusb_pollfd {
+struct libusb_pollfd {
 	int	fd;
 	short	events;
-}	libusb_pollfd;
-
-struct usb_pollfd {
-	TAILQ_ENTRY(usb_pollfd) list;
-	struct libusb_pollfd pollfd;
 };
 
-struct usb_transfer {
-	TAILQ_ENTRY(usb_transfer) list;
-	int num_iso_packets;
-	struct timeval timeout;
-	int transferred;
-	uint8_t flags;
-};
-
-struct usb_ep_tr {
-	TAILQ_ENTRY(usb_ep_tr) list;
-	uint8_t addr;
-	uint8_t idx;
-	uint8_t flags;
-	void *os_priv;
-};
-/* libusb structures */
-
+typedef struct libusb_context libusb_context;
+typedef struct libusb_device libusb_device;
+typedef struct libusb20_device libusb_device_handle;
+typedef struct libusb_pollfd libusb_pollfd;
 typedef void (*libusb_pollfd_added_cb) (int fd, short events, void *user_data);
 typedef void (*libusb_pollfd_removed_cb) (int fd, void *user_data);
 
-typedef struct libusb_context {
-	int	debug;
-	int	debug_fixed;
-
-	int	ctrl_pipe[2];
-
-	TAILQ_HEAD(usb_devs_list, libusb_device) usb_devs;
-	pthread_mutex_t usb_devs_lock;
-
-	TAILQ_HEAD(open_devs_list, libusb_device_handle) open_devs;
-	pthread_mutex_t open_devs_lock;
-
-	TAILQ_HEAD(flying_transfers_list, usb_transfer) flying_transfers;
-	pthread_mutex_t flying_transfers_lock;
-
-	TAILQ_HEAD(pollfds_list, usb_pollfd) pollfds;
-	pthread_mutex_t pollfds_lock;
-
-	unsigned int pollfd_modify;
-	pthread_mutex_t pollfd_modify_lock;
-
-	libusb_pollfd_added_cb fd_added_cb;
-	libusb_pollfd_removed_cb fd_removed_cb;
-	void   *fd_cb_user_data;
-
-	pthread_mutex_t events_lock;
-	int	event_handler_active;
-
-	pthread_mutex_t event_waiters_lock;
-	pthread_cond_t event_waiters_cond;
-}	libusb_context;
-
-typedef struct libusb_device {
-	pthread_mutex_t lock;
-	int	refcnt;
-
-	struct libusb_context *ctx;
-
-	uint8_t	bus_number;
-	uint8_t	device_address;
-	uint8_t	num_configurations;
-
-	TAILQ_ENTRY(libusb_device) list;
-	unsigned long session_data;
-	void   *os_priv;
-}	libusb_device;
-
-typedef struct libusb_device_handle {
-	pthread_mutex_t lock;
-	unsigned long claimed_interfaces;
-
-	TAILQ_ENTRY(libusb_device_handle) list;
-	struct libusb_device *dev;
-	void   *os_priv;
-	TAILQ_HEAD(ep_list, usb_ep_tr) ep_list; 
-}	libusb_device_handle;
-
 typedef struct libusb_device_descriptor {
 	uint8_t	bLength;
 	uint8_t	bDescriptorType;
@@ -295,7 +224,7 @@
 	uint8_t	bInterval;
 	uint8_t	bRefresh;
 	uint8_t	bSynchAddress;
-	unsigned char *extra;
+	uint8_t *extra;
 	int	extra_length;
 }	libusb_endpoint_descriptor __aligned(sizeof(void *));
 
@@ -310,7 +239,7 @@
 	uint8_t	bInterfaceProtocol;
 	uint8_t	iInterface;
 	struct libusb_endpoint_descriptor *endpoint;
-	unsigned char *extra;
+	uint8_t *extra;
 	int	extra_length;
 }	libusb_interface_descriptor __aligned(sizeof(void *));
 
@@ -329,7 +258,7 @@
 	uint8_t	bmAttributes;
 	uint8_t	MaxPower;
 	struct libusb_interface *interface;
-	unsigned char *extra;
+	uint8_t *extra;
 	int	extra_length;
 }	libusb_config_descriptor __aligned(sizeof(void *));
 
@@ -347,22 +276,20 @@
 	enum libusb_transfer_status status;
 }	libusb_iso_packet_descriptor __aligned(sizeof(void *));
 
-struct libusb_transfer;
-
 typedef void (*libusb_transfer_cb_fn) (struct libusb_transfer *transfer);
 
 typedef struct libusb_transfer {
 	libusb_device_handle *dev_handle;
 	uint8_t	flags;
 	unsigned int endpoint;
-	unsigned char type;
+	uint8_t type;
 	unsigned int timeout;
 	enum libusb_transfer_status status;
 	int	length;
 	int	actual_length;
 	libusb_transfer_cb_fn callback;
 	void   *user_data;
-	unsigned char *buffer;
+	uint8_t *buffer;
 	void *os_priv;
 	int	num_iso_packets;
 	struct libusb_iso_packet_descriptor iso_packet_desc[0];
@@ -380,8 +307,8 @@
 void	libusb_free_device_list(libusb_device ** list, int unref_devices);
 uint8_t	libusb_get_bus_number(libusb_device * dev);
 uint8_t	libusb_get_device_address(libusb_device * dev);
-int	libusb_clear_halt(libusb_device_handle *devh, unsigned char endpoint);
-int	libusb_get_max_packet_size(libusb_device * dev, unsigned char endpoint);
+int	libusb_clear_halt(libusb_device_handle *devh, uint8_t endpoint);
+int	libusb_get_max_packet_size(libusb_device * dev, uint8_t endpoint);
 libusb_device *libusb_ref_device(libusb_device * dev);
 void	libusb_unref_device(libusb_device * dev);
 int	libusb_open(libusb_device * dev, libusb_device_handle ** devh);
@@ -405,15 +332,15 @@
 int	libusb_get_config_descriptor(libusb_device * dev, uint8_t config_index, struct libusb_config_descriptor **config);
 int	libusb_get_config_descriptor_by_value(libusb_device * dev, uint8_t bConfigurationValue, struct libusb_config_descriptor **config);
 void	libusb_free_config_descriptor(struct libusb_config_descriptor *config);
-int	libusb_get_string_descriptor_ascii(libusb_device_handle * dev, uint8_t desc_index, unsigned char *data, int length);
+int	libusb_get_string_descriptor_ascii(libusb_device_handle * dev, uint8_t desc_index, uint8_t *data, int length);
 
-/* Asynchronous device I/O*/
+/* Asynchronous device I/O */
 
 struct libusb_transfer *libusb_alloc_transfer(int iso_packets);
 void	libusb_free_transfer(struct libusb_transfer *transfer);
 int	libusb_submit_transfer(struct libusb_transfer *transfer);
 int	libusb_cancel_transfer(struct libusb_transfer *transfer);
-unsigned char *libusb_get_iso_packet_buffer_simple(struct libusb_transfer *transfer, unsigned int packet);
+uint8_t *libusb_get_iso_packet_buffer_simple(struct libusb_transfer *transfer, unsigned int packet);
 
 /* Polling and timing */
 
@@ -434,9 +361,9 @@
 
 /* Synchronous device I/O */
 
-int	libusb_control_transfer(libusb_device_handle * devh, uint8_t bmRequestType, uint8_t bRequest, uint16_t wValue, uint16_t wIndex, unsigned char *data, uint16_t wLength, unsigned int timeout);
-int	libusb_bulk_transfer(struct libusb_device_handle *devh, unsigned char endpoint, unsigned char *data, int length, int *transferred, unsigned int timeout);
-int	libusb_interrupt_transfer(struct libusb_device_handle *devh, unsigned char endpoint, unsigned char *data, int length, int *transferred, unsigned int timeout);
+int	libusb_control_transfer(libusb_device_handle * devh, uint8_t bmRequestType, uint8_t bRequest, uint16_t wValue, uint16_t wIndex, uint8_t *data, uint16_t wLength, unsigned int timeout);
+int	libusb_bulk_transfer(libusb_device_handle *devh, uint8_t endpoint, uint8_t *data, int length, int *transferred, unsigned int timeout);
+int	libusb_interrupt_transfer(libusb_device_handle *devh, uint8_t endpoint, uint8_t *data, int length, int *transferred, unsigned int timeout);
 
 #if 0
 {					/* indent fix */

==== //depot/projects/usb/src/lib/libusb/libusb10.h#6 (text+ko) ====

@@ -31,6 +31,7 @@
 #define	GET_CONTEXT(ctx) (((ctx) == NULL) ? usbi_default_context : (ctx))
 #define	UNEXPORTED __attribute__((__visibility__("hidden")))
 #define	CTX_LOCK(ctx) pthread_mutex_lock(&(ctx)->ctx_lock)
+#define	CTX_TRYLOCK(ctx) pthread_mutex_trylock(&(ctx)->ctx_lock)
 #define	CTX_UNLOCK(ctx) pthread_mutex_unlock(&(ctx)->ctx_lock)
 
 #define	DPRINTF(ctx, dbg, format, args...) do {	\
@@ -53,7 +54,7 @@
 /* internal structures */
 
 struct libusb_super_pollfd {
-	TAILQ_ENTRY(usb_pollfd) list;
+	TAILQ_ENTRY(libusb_super_pollfd) entry;
 	struct libusb20_device *pdev;
 	struct libusb_pollfd pollfd;
 };
@@ -73,8 +74,10 @@
 
 	pthread_mutex_t ctx_lock;
 	pthread_cond_t ctx_cond;
+	pthread_t ctx_handler;
+#define	NO_THREAD ((pthread_t)-1)
 
-	TAILQ_HEAD(pollfds_list, usb_pollfd) pollfds;
+	TAILQ_HEAD(, libusb_super_pollfd) pollfds;
 
 	struct libusb_super_pollfd ctx_poll;
 


More information about the p4-projects mailing list