Re: Proper delay function in host driver

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

 



On Sun, 21 Dec 2014, vichy wrote:

> >> Then I try to use msleep(100) but I found hub_port_status will first
> >> mutex_lock(&hub->status_mutex); then calling get_port_status.
> >> That mean the deadlock may happen.
> >
> > No it doesn't.
> Why it doesn't? from the source, the get_port_status did called in
> critical section protected by hub->status_mutex.
> And msleep is not allowed in critical  section.

Yes it is.  Why do you think it isn't?

A critical section can be either atomic or non-atomic.  If it is
protected by a spinlock (or if it runs in an interrupt handler, or with
interrupts or preemption disabled) then it is atomic, but if it is only
protected by a mutex then it is non-atomic.

msleep is not allowed in atomic sections, but it _is_ allowed in 
non-atomic sections.  Even if the code is protected by a mutex.

Alan Stern

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux