On Feb 16, 2011, at 9:49 PM, Darshan Ghumare wrote: Sir, Depends on the interrupt controller. Common systems have interrupt controllers embedded into 'glue' chips such as a 'Southbridge' or 'Northbridge'. To find the exact device and functionality you will need to consult the hardware manuals for your system.
My experience with small form-factor (pc104) X86 is that much of the setup/assignments of priority is done in the BIOS. I found it to be complex to change the assignments after the kernel is running so your best chance is to use the features of your BIOS. Remember that the ISR typically exists as only a handful of lines of code. Its job is to determine that its hardware was the one interrupting (for when hardware shares interrupt lines), do whatever hardware changes are required (clear interrupt flags, acknowledge DMA, etc.), and then tell the kernel to schedule the rest of the handler (tasklet/bottom half, etc.). A truly prioritized interrupt would allow the higher level interrupt to preempt the running of a lower levels ISR and tasklet. A lower level interrupt would be held off until the higher level interrupts ISR has completed, but it then could preempt the running of the higher level interrupts tasklet. Once all interrupts are scheduled to run as tasklets, it is the order they are queued that determines their run order (last in, first run). For example, scheduling the tasklet for a higher level interrupt with tasklet_hi_schedule() will allow it to run before those scheduled with tasklet_schedule(). Thus there are two places to control interrupt servicing priorities. The hardware level which allows preemption during the microseconds long hardware ISR code, and the software (tasklet) level that has priorities assigned by scheduling methods and scheduling order. -Bruce |
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies