PERFORCE change 165280 for review

Sylvestre Gallon syl at FreeBSD.org
Fri Jun 26 20:04:43 UTC 2009


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

Change 165280 by syl at syl_atuin on 2009/06/26 20:04:31

	Changes suggested by Hans Petter Selasky.
	- Move static inline to global functions().
	- Create a macro for UNEXPORTED functions.

Affected files ...

.. //depot/projects/soc2009/syl_usb/src/lib/libusb/libusb10.c#49 edit
.. //depot/projects/soc2009/syl_usb/src/lib/libusb/libusb10.h#11 edit
.. //depot/projects/soc2009/syl_usb/src/lib/libusb/libusb10_io.c#17 edit

Differences ...

==== //depot/projects/soc2009/syl_usb/src/lib/libusb/libusb10.c#49 (text+ko) ====

@@ -44,6 +44,28 @@
 
 /*  Library initialisation / deinitialisation */
 
+UNEXPORTED void
+dprintf(libusb_context *ctx, int debug, char *str)
+{
+	if (ctx->debug != debug)
+		return ;
+
+	switch (ctx->debug) {
+	case LIBUSB_DEBUG_NO:
+		break ;
+	case LIBUSB_DEBUG_FUNCTION:
+		printf("LIBUSB FUNCTION : %s\n", str); 
+		break ;
+	case LIBUSB_DEBUG_TRANSFER:
+		printf("LIBUSB TRANSFER : %s\n", str);
+		break ;
+	default:
+		printf("LIBUSB UNKNOW DEBUG\n");
+		break ;
+	}
+	return ;
+}
+
 void
 libusb_set_debug(libusb_context * ctx, int level)
 {

==== //depot/projects/soc2009/syl_usb/src/lib/libusb/libusb10.h#11 (text+ko) ====

@@ -74,28 +74,7 @@
 
 #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)
-{
-	if (ctx->debug != debug)
-		return ;
-
-	switch (ctx->debug) {
-	case LIBUSB_DEBUG_NO:
-		break ;
-	case LIBUSB_DEBUG_FUNCTION:
-		printf("LIBUSB FUNCTION : %s\n", str); 
-		break ;
-	case LIBUSB_DEBUG_TRANSFER:
-		printf("LIBUSB TRANSFER : %s\n", str);
-		break ;
-	default:
-		printf("LIBUSB UNKNOW DEBUG\n");
-		break ;
-	}
-	return ;
-}
+#define UNEXPORTED __attribute__((__visibility__("hidden")))
 
 struct usb_pollfd {
 	struct libusb_pollfd pollfd;
@@ -110,127 +89,11 @@
 	uint8_t flags;
 };
 
-static inline int
-usb_add_pollfd(libusb_context *ctx, int fd, short events)
-{
-	struct usb_pollfd *pollfd;
-
-	if (ctx == NULL)
-		return (LIBUSB_ERROR_INVALID_PARAM);
-	
-	pollfd = malloc(sizeof(*pollfd));
-	if (pollfd == NULL)
-		return (LIBUSB_ERROR_NO_MEM);
-
-	pollfd->pollfd.fd = fd;
-	pollfd->pollfd.events = events;
-
-	pthread_mutex_lock(&ctx->pollfds_lock);
-	LIST_ADD_TAIL(&pollfd->list, &ctx->pollfds);
-	pthread_mutex_unlock(&ctx->pollfds_lock);
-
-	if (ctx->fd_added_cb)
-		ctx->fd_added_cb(fd, events, ctx->fd_cb_user_data);
-	return (0);
-}
-
-static inline void
-usb_remove_pollfd(libusb_context *ctx, int fd)
-{
-	struct usb_pollfd *pollfd;
-	int found;
-
-	found = 0;
-	pthread_mutex_lock(&ctx->pollfds_lock);
-
-	LIST_FOREACH_ENTRY(pollfd, &ctx->pollfds, list) {
-		if (pollfd->pollfd.fd == fd) {
-			found = 1;
-			break ;
-		}
-	}
-
-	if (found == 0) {
-		pthread_mutex_unlock(&ctx->pollfds_lock);
-		return ;
-	}
-
-	LIST_DEL(&pollfd->list);
-	pthread_mutex_unlock(&ctx->pollfds_lock);
-	free(pollfd);
-
-	if (ctx->fd_removed_cb)
-		ctx->fd_removed_cb(fd, ctx->fd_cb_user_data);
-}
-
-static inline void
-usb_handle_transfer_completion(struct usb_transfer *uxfer, 
-    enum libusb_transfer_status status)
-{
-	libusb_transfer *xfer;
-	libusb_context *ctx;
-	int len;
-
-	xfer = (struct libusb_transfer *) ((uint8_t *)uxfer + 
-	    sizeof(struct usb_transfer));
-	ctx = xfer->dev_handle->dev->ctx;
-
-	pthread_mutex_lock(&ctx->flying_transfers_lock);
-	LIST_DEL(&uxfer->list);
-	pthread_mutex_unlock(&ctx->flying_transfers_lock);
-
-	if (status == LIBUSB_TRANSFER_COMPLETED && xfer->flags &
-	    LIBUSB_TRANSFER_SHORT_NOT_OK) {
-		len = xfer->length;
-		if (xfer->type == LIBUSB_TRANSFER_TYPE_CONTROL)
-			len -= sizeof(libusb_control_setup);
-		if (len != uxfer->transferred) {
-			status = LIBUSB_TRANSFER_ERROR;
-		}
-	}
-
-	xfer->status = status;
-	xfer->actual_length = uxfer->transferred;
-
-	if (xfer->callback)
-		xfer->callback(xfer);
-	if (xfer->flags & LIBUSB_TRANSFER_FREE_TRANSFER)
-		libusb_free_transfer(xfer);
-
-	pthread_mutex_lock(&ctx->event_waiters_lock);
-	pthread_cond_broadcast(&ctx->event_waiters_cond);
-	pthread_mutex_unlock(&ctx->event_waiters_lock);
-}
-
-static inline void
-usb_handle_disconnect(struct libusb_device_handle *devh)
-{
-	struct libusb_context *ctx;
-	struct libusb_transfer *xfer;
-	struct usb_transfer *cur;
-	struct usb_transfer *to_cancel;
-
-	ctx = devh->dev->ctx;
-
-	while (1) {
-		pthread_mutex_lock(&ctx->flying_transfers_lock);
-		to_cancel = NULL;
-		LIST_FOREACH_ENTRY(cur, &ctx->flying_transfers, list) {
-			xfer = (struct libusb_transfer *) ((uint8_t *)cur + 
-	    		    sizeof(struct usb_transfer));
-			if (xfer->dev_handle == devh) {
-				to_cancel = cur;
-				break ;
-			}
-		}
-		pthread_mutex_unlock(&ctx->flying_transfers_lock);
-
-		if (to_cancel == NULL)
-			break ;
-		
-		usb_handle_transfer_completion(to_cancel, LIBUSB_TRANSFER_NO_DEVICE);
-	}
-	return ;
-}
+UNEXPORTED void dprintf(libusb_context *ctx, int debug, char *str);
+UNEXPORTED int usb_add_pollfd(libusb_context *ctx, int fd, short events);
+UNEXPORTED void usb_remove_pollfd(libusb_context *ctx, int fd);
+UNEXPORTED void usb_handle_transfer_completion(struct usb_transfer *uxfer, 
+    enum libusb_transfer_status status);
+UNEXPORTED void usb_handle_disconnect(struct libusb_device_handle *devh);
 
 #endif /*__LIBUSB10_H__*/

==== //depot/projects/soc2009/syl_usb/src/lib/libusb/libusb10_io.c#17 (text+ko) ====

@@ -38,7 +38,130 @@
 #include "libusb.h"
 #include "libusb10.h"
 
-static int 
+UNEXPORTED int
+usb_add_pollfd(libusb_context *ctx, int fd, short events)
+{
+	struct usb_pollfd *pollfd;
+
+	if (ctx == NULL)
+		return (LIBUSB_ERROR_INVALID_PARAM);
+	
+	pollfd = malloc(sizeof(*pollfd));
+	if (pollfd == NULL)
+		return (LIBUSB_ERROR_NO_MEM);
+
+	pollfd->pollfd.fd = fd;
+	pollfd->pollfd.events = events;
+
+	pthread_mutex_lock(&ctx->pollfds_lock);
+	LIST_ADD_TAIL(&pollfd->list, &ctx->pollfds);
+	pthread_mutex_unlock(&ctx->pollfds_lock);
+
+	if (ctx->fd_added_cb)
+		ctx->fd_added_cb(fd, events, ctx->fd_cb_user_data);
+	return (0);
+}
+
+UNEXPORTED void
+usb_remove_pollfd(libusb_context *ctx, int fd)
+{
+	struct usb_pollfd *pollfd;
+	int found;
+
+	found = 0;
+	pthread_mutex_lock(&ctx->pollfds_lock);
+
+	LIST_FOREACH_ENTRY(pollfd, &ctx->pollfds, list) {
+		if (pollfd->pollfd.fd == fd) {
+			found = 1;
+			break ;
+		}
+	}
+
+	if (found == 0) {
+		pthread_mutex_unlock(&ctx->pollfds_lock);
+		return ;
+	}
+
+	LIST_DEL(&pollfd->list);
+	pthread_mutex_unlock(&ctx->pollfds_lock);
+	free(pollfd);
+
+	if (ctx->fd_removed_cb)
+		ctx->fd_removed_cb(fd, ctx->fd_cb_user_data);
+}
+
+UNEXPORTED void
+usb_handle_transfer_completion(struct usb_transfer *uxfer, 
+    enum libusb_transfer_status status)
+{
+	libusb_transfer *xfer;
+	libusb_context *ctx;
+	int len;
+
+	xfer = (struct libusb_transfer *) ((uint8_t *)uxfer + 
+	    sizeof(struct usb_transfer));
+	ctx = xfer->dev_handle->dev->ctx;
+
+	pthread_mutex_lock(&ctx->flying_transfers_lock);
+	LIST_DEL(&uxfer->list);
+	pthread_mutex_unlock(&ctx->flying_transfers_lock);
+
+	if (status == LIBUSB_TRANSFER_COMPLETED && xfer->flags &
+	    LIBUSB_TRANSFER_SHORT_NOT_OK) {
+		len = xfer->length;
+		if (xfer->type == LIBUSB_TRANSFER_TYPE_CONTROL)
+			len -= sizeof(libusb_control_setup);
+		if (len != uxfer->transferred) {
+			status = LIBUSB_TRANSFER_ERROR;
+		}
+	}
+
+	xfer->status = status;
+	xfer->actual_length = uxfer->transferred;
+
+	if (xfer->callback)
+		xfer->callback(xfer);
+	if (xfer->flags & LIBUSB_TRANSFER_FREE_TRANSFER)
+		libusb_free_transfer(xfer);
+
+	pthread_mutex_lock(&ctx->event_waiters_lock);
+	pthread_cond_broadcast(&ctx->event_waiters_cond);
+	pthread_mutex_unlock(&ctx->event_waiters_lock);
+}
+
+UNEXPORTED void
+usb_handle_disconnect(struct libusb_device_handle *devh)
+{
+	struct libusb_context *ctx;
+	struct libusb_transfer *xfer;
+	struct usb_transfer *cur;
+	struct usb_transfer *to_cancel;
+
+	ctx = devh->dev->ctx;
+
+	while (1) {
+		pthread_mutex_lock(&ctx->flying_transfers_lock);
+		to_cancel = NULL;
+		LIST_FOREACH_ENTRY(cur, &ctx->flying_transfers, list) {
+			xfer = (struct libusb_transfer *) ((uint8_t *)cur + 
+	    		    sizeof(struct usb_transfer));
+			if (xfer->dev_handle == devh) {
+				to_cancel = cur;
+				break ;
+			}
+		}
+		pthread_mutex_unlock(&ctx->flying_transfers_lock);
+
+		if (to_cancel == NULL)
+			break ;
+		
+		usb_handle_transfer_completion(to_cancel, LIBUSB_TRANSFER_NO_DEVICE);
+	}
+	return ;
+}
+
+UNEXPORTED int 
 get_next_timeout(libusb_context *ctx, struct timeval *tv, struct timeval *out)
 {
 	struct timeval timeout;
@@ -60,7 +183,7 @@
 	return (0);
 }	
 
-static int 
+UNEXPORTED int 
 handle_timeouts(struct libusb_context *ctx)
 {
 	struct timespec sys_ts;
@@ -103,7 +226,7 @@
 	return (ret);
 }
 
-static int
+UNEXPORTED int
 handle_events(struct libusb_context *ctx, struct timeval *tv)
 {
 	struct libusb_pollfd *tmppollfd;


More information about the p4-projects mailing list