Skip to contentSkip to conversation

mixing interupts and threads.

DISCUSSION ravikumar 3 participants 3 messages Jul 7, 2008 Kernel janitors

lore
Share & tools
lore

ravikumar

author
#0 lore raw

Hello All ,
I've a few questions.
1. Lets suppose i've some critical section and it is synchronized with locks. A thread came and it's execution is in the middle of critical section, at this time an interrupt was occurred which also executes critical section. As interrupts can't wait on any lock it will get lock and try to execute the critical section and above thread was not yet completed. So inconsistency . How this was handled in Linux. 2.Some process is running in kernel mode, at this a kill was sent to this process, does this signal will delivered to the process while it is in kernel mode.

And also please provide some links how threads ,signals and interrupts will be mixed.

Regards,
Ravikumar.

#1 lore raw
Quoted 12 lines · ravikumar

Hello All ,
I've a few questions.
1. Lets suppose i've some critical section and it is synchronized with locks. A thread came and it's execution is in the middle of critical section, at this time an interrupt was occurred which also executes critical section. As interrupts can't wait on any lock it will get lock and try to execute the critical section and above thread was not yet completed. So inconsistency . How this was handled in Linux. 2.Some process is running in kernel mode, at this a kill was sent to this process, does this signal will delivered to the process while it is in kernel mode.

Quoted 5 lines

And also please provide some links how threads ,signals and interrupts will be mixed.

Regards,
Ravikumar.

1.)This should play out slightly different on uniprocessor vs. SMP, but, IIRC, during a critical section on uniprocessor IRQs are masked and queued as they come in. In SMP, they should be routed to another processor, which should queue them if they need locked resources. Someone please correct me if I'm incorrect.

2.)I do not know the answer to this question. :) Does anyone else know?

#2 lore raw
In reply to ravikumar
Quoted 6 lines · ravikumar

1. Lets suppose i've some critical section and it is synchronized with locks. A thread came and it's execution is in the middle of critical section, at this time an interrupt was occurred which also executes critical section. As interrupts can't wait on any lock it will get lock and try to execute the critical section and above thread was not yet completed. So inconsistency . How this was handled in Linux.

I recommend you read the excellent Documentation/DocBook/kernel-locking.tmpl. If you run 'make pdfdocs', you can read it as a pdf (other output formats also available).

The short answer to your question is that interrupts should be disabled while the thread is holding the spinlock.

Quoted 3 lines

2.Some process is running in kernel mode, at this a kill was sent to this process, does this signal will delivered to the process while it is in kernel mode.

Yes. If you examine the implementation of, say, mutex_lock_interruptible(), you'll see how it checks to see whether signals are pending. Other functions ending in _interruptible() will likely do similar checks.

Signature · 4 lines
Intel are signing my paycheques ... these opinions are still mine
"Bill, look, we understand that you're interested in selling us this
operating system, but compare it to ours.  We can't possibly take such
a retrograde step."