This section provides information about
device drivers, driver interfaces,
and special device files
that are included in the UnixWare 7 operating system.
These include software drivers
and the device drivers that provide support
for various hardware peripherals.
Some addon drivers may also add pages
to this section.
General purpose drivers and drivers
for mass storage devices are documented
in this section.
Drivers for other device types,
such as network and graphics adapter drivers,
are documented in context-sensitive help files
associated with the managers used
to administer those devices.
Current information about
hardware support
is available on the
Compatible Hardware Web Page (CHWP).
The CHWP includes information about
vendor-supplied device support
as well as Caldera device support
that was added after the operating system was released.
For more information, see
``Accessing the SCO Compatible Hardware Web Pages'' in Configuring system hardware.
Backwards compatibility
UnixWare 7 uses versioning schemes
to provide support for drivers written
for earlier versions of the operating system.
This enables the operating system to support older drivers,
but prevents old and new features from being intermixed
in a single driver.
Support for older versions will eventually be removed
from the operating system.
The versioning schemes related to device drivers include:
idtools versioning
The ``idtools'', such as
idbuild(1M),
are used to configure drivers into the kernel.
These tools are versioned to support different versions
of the configuration files.
The idtools version of a driver is defined
in the ``$version'' field of the driver's
Master(4dsp)
file.
If no ``$version'' field is present,
the driver is version 0,
which means that the
idinstall(1M)
command determines the $interface version
for the driver, usually either DDI version 4
or, more typically, $interface nonconforming.
The driver's /etc/conf/mdevice.d file
shows either $oversion 0 or $oversion 1,
followed by a list of nonconforming symbols.
entrytype versioning
For DDI 8 and later interface versions,
$entrytype 1 is defined in an
Interface(4dsp)
file to indicate that the main entry point routines
are accessed through a
drvops(D4)
structure rather than through switch tables
using the named entry point scheme; see
``Entry-point routines'' in HDK Technical Reference.
If no ``$entrytype'' field is defined,
the kernel assumes $entrytype 0.
versioned driver interfaces
Versioned driver interfaces
define the kernel functions, driver entry points,
and kernel structures that are used
in the driver.
A driver's interfaces are declared
in the ``$interface'' field of the
Master(4dsp)
files, which may include only one version
for each interface type.
Supported interface types include
DDI (Device Driver Interface)
Used for all kernel-level drivers,
defines basic functionality such as
synchronization, I/O movement,
configuration, and interrupt handling.
DDI also defines the STREAMS interface.
MDI (MAC Driver Interface)
Used for network adapter drivers,
to supplement the DDI.
See
mdi(7).
SDI (Storage Driver Interface)
Used for mass storage HBA and target drivers,
to supplement the DDI.
See
sdi(7).
I2O (Intelligent Input/Output Interface)
Used for all types of devices on
an I2O platform,
to supplement the DDI.
PSM (Platform Support Module)
Used to implement general support
for specific hardware platforms.
HPCI (Hotplug PCI Interface)
Used to implement PCI hotplug support
for specific hardware platforms.
Each interface type has a manual page in section 7
that explains the operating system versions
that support each interface version.
Drivers that do not conform to the interfaced versions
can be installed with $interface nonconformant
in their Master files.
These drivers must also populate the
``$contact'' field with information
about who wrote and supports the driver.
Drivers that use $interface nonconformant
are discouraged because they are generally
less portable and may be less reliable
than conformant drivers.
$interface base is used in the Master files
for core kernel modules but cannot be used
for specific device drivers.
Support for an interface version
is retained for at least three years
after it is superseded by a new version,
to provide compatibility for drivers written to use them.
The manual pages retain information about an obsoleted version
for one operating system release past where it is supported.
We recommends that drivers be ported
to newer interface versions
to take advantage of new features
and to extend the life of the drivers.
When a driver is installed on the system,
it declares the DDI version(s) being used in the
``$interface'' field of the
Master(4dsp)
file.
Drivers that use one of the mp ddi sets
must also use $interface: Version 2 in the
Master file and,
for DDI versions before DDI 8, set
devflag(D1)
to D_MP.
A simple
awk(1)
script can identify
all drivers using certain interface versions
that are installed on your system.
For example, the following script
reports all drivers that use
DDI version 5/5mp and earlier: