lkml.org 
[lkml]   [2005]   [Nov]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [Question] spin_lock in interrupt handler.
Steven Rostedt wrote:

>On Fri, 2005-11-18 at 16:37 +0800, liyu wrote:
>
>
>>Hi, every one in LKML.
>>
>> I have one question about how to use spin_lock.
>>
>> I read Documentation/spinlocks.txt wrote by Linus. The Lesson 1 and
>>2 are simple for me.
>>But I confused in Lesson 3. The most doublt is why we can not use
>>spin_lock_irq*() version in
>>interrupt handler?
>>
>> At i386, I known the interrupt is disabled in interrupt handler. I
>>think this feature is
>>supplied in handware-level. The spin_lock_irqrestore() will use 'sti'
>>instruction internal, it will change interrupt mask bit in FLAGS
>>register, do this have re-enable interrupt, even in interrput handler? I
>>can not sure this.
>>
>>
>
>Hello once again Liyu ;-)
>
>I don't see where he says you can't use spin_lock_irq* in interrupt
>handlers. He only says that you are safe to use the non-irq* versions
>IFF (if and only if) the locks are not used in interrupts.
>
>So, (copied from the text itself):
>
>---
>The reasons you mustn't use these versions if you have interrupts that
>play with the spinlock is that you can get deadlocks:
>
> spin_lock(&lock);
> ...
> <- interrupt comes in:
> spin_lock(&lock);
>---
>
>If you hold a spin lock without interrupts disabled, and an interrupt
>happens on the same CPU that holds the lock, and that interrupt handler
>tries to grab the lock it will just spin until that lock is released,
>which will _never_ happen, since the lock is held by the process that
>was interrupted, and will not run until the interrupt (that's spinning)
>is done. So you have a deadlock.
>
>Clear?
>
>-- Steve
>
>
>
>
>-
>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/
>
>
>
>
Hi, Steven, Nice to meet you too ;) (These are the words that I first
studied in English class.)

Yes, I am clear, I think I understand it in wrong direction before.

Good Luck.

-liyu




-
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/

\
 
 \ /
  Last update: 2005-11-21 02:16    [W:0.084 / U:0.228 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site