On Wed, Feb 02, 2005 at 11:03:09AM -0800, Nishanth Aravamudan wrote: > Hello, > > Description: Replace deprecated interruptible_sleep_on_timeout() with direct > wait-queue usage. Also replace some rather odd wait-queue usage with the > existent macros. Also adjusted the wake_up_interruptible() call appropriately, > as I changed all the states to TASK_UNINTERRUPTIBLE (signals were not be > checked > in the current code). Patch is compile-tested.
Patch was broken in various ways. Fixed-up below (ends up being fewer changes). Please drop previous patch and apply the attached. Description: Replace deprecated interruptible_sleep_on_timeout() with direct wait-queue usage. Patch is compile-tested. Signed-off-by: Nishanth Aravamudan <[EMAIL PROTECTED]> --- 2.6.12-rc1-v/drivers/usb/serial/digi_acceleport.c 2005-03-01 23:38:08.000000000 -0800 +++ 2.6.12-rc1-kj/drivers/usb/serial/digi_acceleport.c 2005-04-04 11:10:00.000000000 -0700 @@ -14,6 +14,9 @@ * Peter Berger ([EMAIL PROTECTED]) * Al Borchers ([EMAIL PROTECTED]) * +* (04/04/2005) nacc +* removed interruptible_sleep_on_timeout() usage [deprecated] +* * (12/03/2001) gkh * switched to using port->open_count instead of private version. * Removed port->active @@ -244,6 +247,7 @@ #include <linux/module.h> #include <linux/spinlock.h> #include <linux/workqueue.h> +#include <linux/wait.h> #include <asm/uaccess.h> #include <linux/usb.h> #include "usb-serial.h" @@ -567,27 +571,21 @@ static struct usb_serial_device_type dig * and the sleep. In other words, spin_unlock_irqrestore and * interruptible_sleep_on_timeout are "atomic" with respect to * wake ups. This is used to implement condition variables. +* +* interruptible_sleep_on_timeout is deprecated and has been replaced +* with the equivalent code. */ static inline long cond_wait_interruptible_timeout_irqrestore( wait_queue_head_t *q, long timeout, spinlock_t *lock, unsigned long flags ) { + DEFINE_WAIT(wait); - wait_queue_t wait; - - - init_waitqueue_entry( &wait, current ); - - set_current_state( TASK_INTERRUPTIBLE ); - - add_wait_queue( q, &wait ); - - spin_unlock_irqrestore( lock, flags ); - + prepare_to_wait(q, &wait, TASK_INTERRUPTIBLE); + spin_unlock_irqrestore(lock, flags); timeout = schedule_timeout(timeout); - - remove_wait_queue( q, &wait ); + finish_wait(q, &wait); return( timeout ); @@ -1528,7 +1526,7 @@ dbg( "digi_open: TOP: port=%d, open_coun static void digi_close( struct usb_serial_port *port, struct file *filp ) { - + DEFINE_WAIT(wait); int ret; unsigned char buf[32]; struct tty_struct *tty = port->tty; @@ -1604,8 +1602,9 @@ dbg( "digi_close: TOP: port=%d, open_cou dbg( "digi_close: write oob failed, ret=%d", ret ); /* wait for final commands on oob port to complete */ - interruptible_sleep_on_timeout( &priv->dp_flush_wait, - DIGI_CLOSE_TIMEOUT ); + prepare_to_wait(&priv->dp_flush_wait, &wait, TASK_INTERRUPTIBLE); + schedule_timeout(DIGI_CLOSE_TIMEOUT); + finish_wait(&priv->dp_flush_wait, &wait); /* shutdown any outstanding bulk writes */ usb_kill_urb(port->write_urb); ------------------------------------------------------- SF email is sponsored by - The IT Product Guide Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now. http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel