System(DSP)
System --
system-specific configuration information for a kernel module
Description
sdevice-
destination directory for System file information
A System file
is one of the Installable Driver/Tunable Parameters
kernel configuration files that
contains information
needed to incorporate a particular kernel module
into the next system configuration.
General configuration information about the module type
is described in the Master file.
When the System component
of a module's Driver Software Package (DSP) is installed,
idinstall(ADM)
stores the module's System file information
in /etc/conf/sdevice.d/module-name,
where the file module-name is the name
of the module being installed.
Never access /etc/conf/sdevice.d/module-name
directly;
use
idinstall(ADM).
Blank lines in System files and lines beginning
with # or *
are considered comments and are ignored.
The first non-comment line should be:
$version 2
Older System file versions are supported by idinstall
(see Compatibility Considerations).
Optionally, following the $version line, the following line can appear:
$static
The presence of the $static line in the file indicates
that the module
should be statically configured (directly linked into the kernel image)
even if it is capable of being loadable.
Following these lines are one or more lines in the following format:
module-name configure unit ipl itype ivec sioa eioa scma ecma dmachan [cpu]
These lines contain configuration information
for each instance of the module.
For example, if two instances of a device are to be configured,
two lines of System file definitions are required for the device.
Each of these configuration lines contains 11 or 12 fields,
with the twelfth field (cpu) being optional.
Each field must be delimited by white space and specify a value.
Note that, except for the first two fields
(module-name and configure),
the remaining fields on this line are used for
hardware-related modules only.
That is, these fields apply only to modules
that have the h ``characteristics'' flag
set in the associated Master file.
When a field does not apply to the module--regardless
of the module type--the
unused field must contain the value 0
(except for dmachan, which if unused must contain the value -1).
module-name-
Identifies the internal name of the module.
The field value must match
the module name specified in the module's Master file.
configure-
Indicates (Y or N)
whether
idbuild(ADM)
should configure
this instance of the module into the system.
Note that this field can be used to configure statically linked modules
or to configure dynamically loadable modules.
unit-
Specifies the number of subdevices attached
to a controller or pseudo device, or
this field can be used
to encode an arbitrary, module-dependent numeric value.
When this field is not used,
it should contain the value 0.
The DSP for an HBA driver
should set unit to -1
so that the SDI subsystem can assign
a unique unit value to this instance of the driver.
SDI assigns a value that represents the controller number
(the ``c0'' part of c0b0t0d0s0)
to the unit field
when the HBA driver is initialized.
SDI interprets -1 as meaning that
the HBA instance
has not yet been assigned a unit value.
Modifying this value after driver installation
or setting it to a value other than -1 in the DSP
corrupts the SDI subsystem.
ipl-
Specifies the interrupt priority level
for the device controlled by this module
and the priority at which the module's interrupt handler will run.
Valid values are:
0-
Used if the module is not a hardware module
or does not have an interrupt handler.
1-
(lowest priority);
used for software interrupts
and should not be used for hardware drivers
5-
Used for SDI HBA devices.
6-
Used for network adapter cards
and other STREAMS devices.
8-
Reserved for the clock tick interrupt.
9-
Reserved for serial ports (asyc).
itype-
Indicates the type of interrupt sharing (if any)
this hardware module supports.
Note that, if a module supports a number of interrupt sources,
it requires multiple lines in the System file,
and each line may specify a different itype field value.
Valid values are:
0-
This instance of the device does not use interrupts.
1-
This instance of the device uses
an edge-triggered interrupt vector that cannot be shared,
not even with another instance of the same module.
2-
This instance of the device uses
an edge-triggered interrupt vector
that can be shared with another instance of the same module,
but can not be shared with other modules.
3-
This instance of the device uses
an edge-triggered interrupt vector
that can be shared with any instance of any hardware modules.
4-
This instance of the device uses
a level-sensitive interrupt vector
that can be shared with any instance of any hardware module.
PCI devices must have this value
and be able to share interrupts.
Each interrupt is programmed individually
according to the settings for each device.
The driver specifies the default settings,
but these may be overridden by BIOS information
or user overrides.
When this field is not used,
it must contain the value 0.
vector-
Specifies the interrupt vector number
used by this instance of the device.
Valid values are a decimal number
from 1 through the value of the highest interrupt vector number
supported by the system.
Note that more than one device can share an interrupt vector number
if the devices use the same itype interrupt,
and that interrupt is of a type that can be shared.
Note also that every instance of every module
that shares an interrupt vector number
must specify the same ipl values.
When this field is not used,
it should contain the value 0.
sioa-
Start I/O address.
Specifies the lowest I/O port address
through which the device communicates.
Valid values are a hexadecimal number
from 0 through FFFF.
For non-hardware modules or devices without I/O ports,
this field should contain the value 0.
eioa-
End I/O address.
Specifies the highest (inclusive) I/O port address
through which the device communicates.
Valid values are a hexadecimal number
from 1 through FFFF.
Note that the value of the eioa field
must be greater than or equal to
the value of the sioa field.
For non-hardware modules or devices without I/O ports,
this field should contain the value 0.
scma-
Start memory controller address.
Specifies the lowest address in memory
through which the device communicates.
Valid values are a hexadecimal number
from 10000 through FFFFFFFF.
For non-hardware drivers or devices without controller memory,
this field should contain the value 0.
ecma-
End memory controller address.
Specifies the highest (inclusive) address in memory
through which the device communicates.
Valid values are a hexadecimal number
from 10000 through FFFFFFFF.
Note that the value of the ecma field
must be greater than or equal to
the value of the scma field.
For non-hardware modules or devices without controller memory,
this field should contain the value 0.
dmachan-
For hardware modules that use DMA channels,
specifies the DMA channel number.
Valid values are a decimal number
from 0 through 7.
For non-hardware modules or devices that do not use channelized DMA,
this field should contain the value -1.
cpu-
Optional field.
Specifies on a multiprocessor system
a CPU number to which the module should be bound
(driver code will run only on the specified CPU).
This binding only applies to interrupt handlers
and DDI entry points as described in
Section D2 manual pages in Section D2 manual pages.
Currently, the same CPU number
must be given on all System lines
for a module.
Warnings
Package scripts should never access
System files directly;
only the
idinstall(ADM)
and
idcheck(ADM)
commands should be used.
References
idbuild(ADM),
idcheck(ADM),
idinstall(ADM),
Master(DSP)
Backward compatibility
Compatibility considerations
For compatibility with existing add-on DSP packages,
idinstall also accepts the old
(version 0 and version 1) System file formats,
and converts them to the current version 2 format.
Because some fields moved between the Master file and
the System file, version 0 and version 1 Master
and System files must be installed together,
using a single invocation of the idinstall command.
This allows idinstall to move the fields between the files
during conversion.
Version 0 System files are not supported for exec modules.
The older formats had fewer fields.
In version 1, the ``cpu'' field was in the Master file
instead of the System file.
In version 0, the ``dmachan'' field was in the Master file
instead of the System file and there was no ``cpu'' field.
The older formats had no $static line;
Version 1 had a similar but inverted
$loadable module-name.
02 June 2005
© 2005 The SCO Group, Inc. All rights reserved.
SCO OpenServer Release 6.0.0 - 02 June 2005