Thanks a lot Prabhu for great explanation, comments in-line:

On Wed, Sep 1, 2010 at 10:02 PM, Prabhu nath <[email protected]> wrote:

> Interrupt context is a loaded term. It is used for both top-half and
> bottom-half processing.
>
I need some more reading, will do that :)

> Linux defines two terms in the top-half, one is Interrupt handler (IH) and
> Interrupt Service Routine (ISR).
> Interrupt handler is a standard kernel code that is executed by the
> processor once the interrupt is generated. To abstract it, this generic code
> is executed for all the generated interrupts. This, in general saves the
> present processor context and paves way for the execution of ISR.
> ISR is a interrupt service routine written by a device driver programmer to
> handle the interrupt of a device. ISR is mainly responsible to verify the
> status register of a device to find out the cause of the interrupt and act
> accordingly.
>
> Both IH and ISR will not have a context of its own. Interrupts generated by
> a hardware device is asynchronous. i.e. it can be generated at any point in
> time.
> When such a interrupt is generated, the current execution is interrupted
> and the execution  control is transferred to IH and ISR will be executed.
> Thus we can infer that both IH and ISR will be executing in an anonymous
> context.
>
I am struggling to find meaning of interrupt context now.

>
> For Eg. Consider there are 3 tasks T2, T3. Suppose T2 invoked a read system
> call to read data from the secondary media (say hard disk), driver of the
> hard disk will initiate the device to gather the data and put task T2 in the
> wait queue and invokes scheduler. Now, scheduler picks up say T3. When
> processor is executing task T3, there was interrupt generated by the
> harddisk controller indicating that data is ready. At this point IH and ISR
> is executed. IH and ISR of this interrupt has no relevance to task T3, but
> still it is executed in the context of T3. Hence we say that IH and ISR will
> always be executed in the anonymous context.
>
Wow, didnt know this. So IH and ISR wont execute in interrupt context? What
is interrupt context then? and if they execute in context of T3, does it
have any side-effect on processing of T3?

>
> Most of the bottom half execution happens the same way, i.e. it will be
> executing in the anonymous context unless the job of bottom half is
> relegated to respective kernel threads. In the latter case the bottom half
> execution will have its own context.
>
> For more details about top-half and bottom half, refer ULK 3rd edtion by
> Bovet, Chapter 4
>
Would read it.

Thanks again for great insights.

>
> Regards,
> Prabhu
>
>
>
> On Wed, Sep 1, 2010 at 9:08 PM, Hiren Panchasara <
> [email protected]> wrote:
>
>> Process context is schedulable but interrupt context is not. Why and how?
>> Any examples I can look at?
>>
>> Thanks.
>>
>>
>>
>> --
>> To unsubscribe from this list: send an email with
>> "unsubscribe kernelnewbies" to [email protected]
>> Please read the FAQ at http://kernelnewbies.org/FAQ
>>
>>
>

Reply via email to