--- linux-gpib-3.2.15/drivers/gpib/ni_usb/ni_usb_gpib.c 2010-08-23 18:03:15.000000000 +0200 +++ linux-gpib-3.2.15/drivers/gpib/ni_usb/ni_usb_gpib.c 2011-05-04 10:55:22.816674285 +0200 @@ -34,7 +34,7 @@ static int ni_usb_parse_status_block(const uint8_t *buffer, struct ni_usb_status_block *status); static int ni_usb_set_interrupt_monitor(gpib_board_t *board, unsigned int monitored_bits); -static DECLARE_MUTEX(ni_usb_hotplug_lock); +static DEFINE_SEMAPHORE(ni_usb_hotplug_lock); //calculates a reasonable timeout in that can be passed to usb functions static inline unsigned long ni_usb_timeout_msecs(unsigned int usec) @@ -118,7 +118,7 @@ } usb_dev = interface_to_usbdev(ni_priv->bus_interface); out_pipe = usb_sndbulkpipe(usb_dev, ni_priv->bulk_out_endpoint); - init_MUTEX_LOCKED(&context.complete); + sema_init(&context.complete,0); context.timed_out = 0; usb_fill_bulk_urb(ni_priv->bulk_urb, usb_dev, out_pipe, data, data_length, &ni_usb_bulk_complete, &context); @@ -218,7 +218,7 @@ } usb_dev = interface_to_usbdev(ni_priv->bus_interface); in_pipe = usb_rcvbulkpipe(usb_dev, ni_priv->bulk_in_endpoint); - init_MUTEX_LOCKED(&context.complete); + sema_init(&context.complete,0); context.timed_out = 0; usb_fill_bulk_urb(ni_priv->bulk_urb, usb_dev, in_pipe, data, data_length, &ni_usb_bulk_complete, &context); @@ -1516,9 +1516,9 @@ return -ENOMEM; ni_priv = board->private_data; memset(ni_priv, 0, sizeof(ni_usb_private_t)); - init_MUTEX(&ni_priv->bulk_transfer_lock); - init_MUTEX(&ni_priv->control_transfer_lock); - init_MUTEX(&ni_priv->interrupt_transfer_lock); + sema_init(&ni_priv->bulk_transfer_lock,1); + sema_init(&ni_priv->control_transfer_lock,1); + sema_init(&ni_priv->interrupt_transfer_lock,1); return 0; }