from
The Free On-line Dictionary of Computing (8 July 2008)
interrupt handler
<software> A routine which is executed when an {interrupt}
occurs. Interrupt handlers typically deal with low-level
events in the hardware of a computer system such as a
character arriving at a {serial port} or a tick of a
{real-time clock}. Special care is required when writing an
interrupt handler to ensure that either the interrupt which
triggered the handler's execution is masked out (inhibitted)
until the handler exits, or the handler is {re-entrant} so
that multiple concurrent invocations will not interfere with
each other.
If interrupts are masked then the handler must execute as
quickly as possible so that important events are not missed.
This is often arranged by splitting the processing associated
with the event into "upper" and "lower" halves. The lower
part is the interrupt handler which masks out further
interrupts as required, checks that the appropriate event has
occurred (this may be necessary if several events share the
same interrupt), services the interrupt, e.g. by reading a
character from a {UART} and writing it to a {queue}, and
re-enabling interrupts.
The upper half executes as part of a user process. It waits
until the interrupt handler has run. Normally the {operating
system} is responsible for reactivating a process which is
waiting for some low-level event. It detects this by a shared
{flag} or by inspecting a shared queue or by some other
synchronisation mechanism. It is important that the upper and
lower halves do not interfere if an interrupt occurs during
the execution of upper half code. This is usually ensured by
disabling interrupts during {critical sections} of code such
as removing a character from a queue.
(2002-07-24)