HDK Technical Reference

SDI routing

SDI routing routes requests between HBAs and target drivers. This is required when multiple HBA drivers are configured into a system, and is implemented universally to ensure that all SDI drivers function properly when multiple HBAs are configured.

Routing is implemented with the HBA table and the Equipped Device Table (EDT):

  1. When the system is initialized, each HBA driver for a configured devide polls each bus that is attached to that HBA card and determines which devices are present.

  2. The devices found are placed in the EDT table. Each entry in the EDT retains the index of the relevant HBA driver in the HBA table.

  3. When the target drivers run their initialization code (and rinit(D2sdi) routine), they execute the sdi_doconfig(D3sdi) routine to claim their type of device (for example, hard disk or tape). As part of the claiming process, the target driver retrieves the HBA table index for the each device from the EDT. Therefore, with each SDI request, the target driver uses the HBA table index, directly or indirectly, to facilitate request routing.

  4. HBA drivers pass a pointer to the target driver's interrupt routine in the command block.

    When the HBA driver completes a request, it executes the sdi_callback(D3sdi) routine, which then calls the target driver's intr(D2sdi) routine, using the pointer provided by the target driver.

© 2005 The SCO Group, Inc. All rights reserved.
OpenServer 6 and UnixWare (SVR5) HDK - June 2005