The Mac OS startup process automatically performs the initial construction and maintenance of the IST for all built-in I/O ASICs, PCI expansion cards, and PCI-to-PCI bridges that use the default PCI bridge IST extensions.
Expansion card developers normally have no need to construct the IST but may need to extend it as described in Explicit IST Extension. The following description of the initial construction process is included for completeness.
The interrupt tree is constructed by creating new sets of child members under existing child members, which thus become parent members. The preexisting root member is used as the parent member for the first layer of the tree. As each new child member is created, a null ISR is installed and its IER and IDR routines are inherited from the parent. If built-in interrupt controller hardware can enable and disable interrupts for each of the interrupt members in the new interrupt set, IERs and IDRs tailored to each interrupt member are installed. When a child member becomes a parent member, a transversal ISR is installed on top of the null ISR for dispatching its child members. This process is repeated for as many layers and IST members as required. Typically, the default IST originally created services all the fixed hardware devices and slots on the Power Macintosh main logic board.
Having child members inherit their parents' IERs and IDRs allows devices that don't have hardware enabling and disabling support to still use IER and IDR functions. Invoking an IER or IDR for such a device will transparently invoke the parent member's IER or IDR. At some point up the interrupt tree, main logic board hardware will physically enable or disable interrupts intended for the device.
Default enablers, disablers, and transversal ISRs for all Macintosh built-in I/O devices are provided and installed by Apple I/O family experts. Drivers that use the family expert APIs are more portable and are more likely to be compatible with future Apple products.
The Apple built-in handlers can be overridden by other software. However, built-in interrupt enablers, disablers, and transversal ISRs are very specific to the hardware platform. Detailed knowledge of the built-in interrupt controller hardware is required to successfully override one.