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):
-
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.
-
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.
-
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.
-
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