Re: snd_mixart_send_msg / snd_mixart_send_msg_wait_notif

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



At Tue, 18 Sep 2007 13:54:23 +0200,
Rene Herman wrote:
> 
> Hi.
> 
> While looking through ALSA for schedule_timeout() calls, I ran into:
> 
> int snd_mixart_send_msg(...)
> {
> 
> 	[ ... ]
> 
>          set_current_state(TASK_UNINTERRUPTIBLE);
>          add_wait_queue(&mgr->msg_sleep, &wait);
>          spin_unlock_irq(&mgr->msg_lock);
>          timeout = schedule_timeout(MSG_TIMEOUT_JIFFIES);
>          remove_wait_queue(&mgr->msg_sleep, &wait);
> 
>          if (! timeout) {
>                  /* error - no ack */
>                  mutex_unlock(&mgr->msg_mutex);
>                  snd_printk(KERN_ERR "error: no reponse on msg %x\n", 
> msg_frame);
>                  return -EIO;
>          }
> 
> 	[ ... ]
> 
> }
> 
> and the same in snd_mixart_send_msg_wait_notif().
> 
> I believe there to be  something wrong with this code. A schedule_timeout() 
> in TASK_UNINTERRUPTIBLE is always going to return 0.

No, it returns the time left at the point it's woken up.
*_uninterruptible() ignores signals but not wake_up() itself
(otherwise it makes no sense).  The description in the kernel comment
is misleading indeed.


Takashi
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux