PANIC! UNIX System Crash Dump Analysis Handbook (Bk/CD-ROM)
A simpler form of interrupt response has essentially one vector associated with each interrupt priority level. Interrupt recognition is faster and easier (in hardware) but requires the software to check each device that might interrupt at that particular priority level to see if it was the one(s) issuing the request. This is known as polling. Some software complications result. Since the hardware cannot uniquely identify a device, the driver code for each device must have a function that checks to see if that particular piece of hardware was responsible. This is normally done by the interrupt service routine, which can be called at any time, whether or not an interrupt was pending. Thus, the interrupt service routine in a driver must first check to see if there really was an interrupt before proceeding. Polling is the method used by SPARC. The CPU does not support a large vector; there is one per interrupt priority level, giving 16 slots. The first one, level 0, is not used ”it actually holds a pointer to a spurious error function (no device should be able to interrupt at level 0!). For SPARC machines that handle VME boards (older Sun-4 systems and the 600 series), additional hardware receives and holds the vector information provided by the devices. This is made available to the software and is used to locate an interrupt service routine ” but the hardware doesn't do it all for you, this time. |