Browse Prior Art Database

Generic Unix Off-Level Interrupt Handling Invocation Algorithm

IP.com Disclosure Number: IPCOM000119717D
Original Publication Date: 1991-Feb-01
Included in the Prior Art Database: 2005-Apr-02
Document File: 2 page(s) / 90K

Publishing Venue

IBM

Related People

Kampe, MA: AUTHOR [+4]

Abstract

A program is disclosed that describes a technique that starts an off- level interrupt handler in a UNIX* or other multi-tasking operating system environment.

This text was extracted from an ASCII text file.
This is the abbreviated version, containing approximately 52% of the total text.

Generic Unix Off-Level Interrupt Handling Invocation Algorithm

      A program is disclosed that describes a technique that
starts an off- level interrupt handler in a UNIX* or other
multi-tasking operating system environment.

      In a device driver there are generally two threads of
execution.  The first thread of execution is the processing of
commands from a controlling application or task.  The second thread
of execution is initiated upon receipt of an interrupt.  When the
execution thread for processing an interrupt starts to take up a
significant amount of time, it starts to adversely affect the overall
system integrity and performance.  Thus, interrupt service routines
are split into two pieces:  (1) a high priority, relatively short
interrupt service routine that queues up (2) a lower priority,
relatively long, off-level interrupt service routine.  This allows
other devices to be able to get interrupt processing time in a timely
fashion.  This creates the need for another independent thread of
execution in the software component. This third thread of execution,
once started, will wait for the interrupt to be queued and the
operating system to pass control to it.

      In order to make this off-level interrupt handler work in an
operating system there needs to be a way to switch from the high
priority process to  a lower priority process. In the UNIX operating
system there exist two kernel subroutines that will provide a
mechanism for changing from one priority to another.  These two
routines are called "sleep" and  "wakeup", and they perform that
function that the name implies. "Sleep" stops the process at that
point in the code and "wakeup" causes that process to pick up right
where it left off and continue.  The "sleep" also has with it a
parameter that allows the change of priority levels, which is one of
the objectives of an off-level interrupt handler. The "sleep" call is
placed in the off-level portion of the service routine.

      B...