If you’re using Neutrino 6.2or later, this might help. It’s from the Neutrino User’s Guide, which is available with 6.3:
Device enumeration
Neutrino uses a device enumerator manager process, enum-devices, to
detect all known hardware devices on the system and to start the
appropriate drivers. It’s called by the /etc/rc.d/rc.devices script,
which /etc/system/sysinit invokes.
The enum-devices manager uses a series of configuration files to specify
actions to take when the system detects specific hardware devices. After
it reads the configuration file(s), enum-devices queries its various
enumerators to discover what devices are on the system. It then matches
these devices against the device IDs listed in the configuration files.
If the device matches, the action clauses associated with the device are
executed. You can find the enumerator configuration files in the
/etc/system/enum directory.
Here’s some sample code from a configuration file:
device(pci, ven=2222, dev=1111)
uniq(sernum, devc-ser, 1)
driver(devc-ser8250, “-u$(sernum) $(ioport1),$(irq)” )
This code directs the enumerator to do the following when it detects
device 1111 from vender 2222:
- Set sernum to the next unique serial device number, starting at 1.
- Start the devc-ser8250 driver with the provided options (the device
enumerator sets the ioport and irq variables).
To detect new hardware or specify any additional options, you can extend
the enumerator configuration files in the following ways:
- an oem directory
- an overrides file
- a host-specific set of enumeration files
as described below.
The enumerator reads and concatenates the contents of all configuration
files under the chosen directory before it starts processing.
For details on the different command-line options and a description of
the syntax for the configuration files, see enum-devices in the
Utilities Reference.
oem directory
If you’re an OEM, and you’ve written any device drivers, create an oem
directory under /etc/system/enum to contain configuration files for the
devices.
overrides file
If you need to set up devices or options that are specific to your
particular system configuration, create an overrides file under
/etc/system/enum. The enumerator includes this file last and adds any
definitions in it to the set that enum-devices works with. If the
overrides file has something that a previously included file also has,
the later definition wins.
For example:
-
If you want to stop a particular device from running, or change how it
starts, create a /etc/system/enum/overrides file and add a device(…)
entry for the device:
device(pci, ven=1234, dev=2000)
device(pci, ven=1234, dev=2001)
requires( $(IONET_CMD), )
uniq(netnum, devn-en, 0)
mount(-Tio-net /lib/dll/devn-pcnet.so, “/dev/io-net/en$(netnum)”)
device(pci, ven=1234, dev=2002)
device(pci, ven=1234, dev=2003)
The first block of this code specifies to do the following if the
enumerator detects devices 2000 and 2001 from vendor 1234:
1.If io-net isn’t running, start it. IONET_CMD is a macro, defined in
/etc/system/enum/include/net, that specifies the default io-net command
line.
2.Set netnum to the next unique network interface device number,
starting at 0.
3.Mount the PCNET driver into io-net.
The second block of code tells the enumerator to do nothing if it
detects devices 2002 or 2003 from vendor 1234.
When you add device entries to prevent devices from being enumerated,
make sure that there aren't any action clauses after them. Any group of
actions clauses found after any single or set of device entries is used
for those devices. Place these device entries at the end of your
overrides configuration file.
-
If you want to change the way the enumerator starts TCP/IP, you have to
override the definition of the basic io-net command that’s defined in
/etc/systems/enum/include/net. By default, the command is:
io-net -ptcpip
If you want to enable IPSec, add this code to your overrides file:
all
set(IONET_CMD, io-net -ptcpip ipsec)
Host-specific enumerators
To further customize the enumerators for your system configuration, you
can create a /etc/host_cfg/$HOSTNAME/system/enum directory. If this
directory structure exists, the rc.devices script tells the enumerators
to read configuration files from it instead of from /etc/system/enum.
Even if you have a /etc/host_cfg/$HOSTNAME/system/enum directory, the
enumerator looks for an oem directory and overrides file under
/etc/system/enum.
An easy way to set up the directory is to copy the /etc/system/enum
directory (including all its subdirectories) to your /etc/host_cfg/$
HOSTNAME/system directory and then start customizing.