-/**
- * scsi_sleep_done - timer function for scsi_sleep
- * @sem: semphore to signal
- *
- **/
-static void scsi_sleep_done(unsigned long data)
-{
- struct semaphore *sem = (struct semaphore *)data;
-
- if (sem)
- up(sem);
-}
-
-/**
- * scsi_sleep - sleep for specified timeout
- * @timeout: timeout value
- *
- **/
-void scsi_sleep(int timeout)
-{
- DECLARE_MUTEX_LOCKED(sem);
- struct timer_list timer;
-
- init_timer(&timer);
- timer.data = (unsigned long)&sem;
- timer.expires = jiffies + timeout;
- timer.function = (void (*)(unsigned long))scsi_sleep_done;
-
- SCSI_LOG_ERROR_RECOVERY(5, printk("sleeping for timer tics %d\n",
- timeout));
-
- add_timer(&timer);
-
- down(&sem);
- del_timer(&timer);
-}
-