Messages in this thread | | | Date | Wed, 30 Aug 2006 11:01:43 +0530 | From | "Rajat Jain" <> | Subject | Re: Spinlock query |
| |
On 8/30/06, Rik van Riel <riel@surriel.com> wrote: > Rick Brown wrote: > > Hi, > > > > In my driver (Process context), I have written the following code: > > > > -------------------------------------------- > > spin_lock(lock) > > ... > > //Critical section to manipulate driver data > > ... interrupt hits here > interrupt handler tries to grab the spinlock, which is already taken > *BOOM* > > > spin_u lock(lock) > > --------------------------------------------- > >
The interrupt handler TRIES to grab the spinlock, which is already taken. Why will it "BOOM"? Wouldn't the interrupt handler busy wait, waiting for the lock?
Am I missing something here?
Rajat
> > I have written similar code in my interrupt handler (Interrupt > > context). The driver data is not accessed from anywhere else. Is my > > code safe from any potential concurrency issues? Is there a need to > > use spin_lock_irqsave()? In both the places? > > You need to use spin_lock_irqsave() from process context. > From the interrupt handler itself it doesn't hurt, but it > shouldn't matter much since interrupt handlers should not > get preempted. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |