NAME
ioconfig — ioconfig entry format
SYNOPSIS
#include <sys/ioconfig.h>
DESCRIPTION
The
ioconfig
file provides the mapping between information stored in device file
dev_t
(major number and logical unit)
and the information the
I/O
system uses to communicate with devices
(hardware paths and manager paths).
At boot time
ioinit
reads the file and stores the information in the
io_tree
kernel data structure (see
ioinit(1M)).
The
ioconfig
file is created by
insf
at install time and is modified by
insf
and
rmsf
when devices are added or removed
(see
insf(1M)
and
rmsf(1M)).
The only purpose of the
ioconfig
file to maintain configuration information
when the system is not running.
While the system is running,
all accesses are made directly to the kernel
io_tree
structure, although any tools that change the kernel structures
must also keep
ioconfig
consistent.
The
ioconfig
file begins with the ioconfig magic number.
#define IOCONFIG_MAGIC 0x2122494f /* magic number */
Following the magic number is an array of
ioconfig_entry
structures, which logically form a tree structure
defining the connectivity of the various levels
of software modules and managers,
the device class and hardware address of each element,
and the logical unit associated with each leaf node.
The root of the tree is array element 0.
Each
ioconfig_entry
contains the following fields as defined in
<sys/ioconfig.h>:
#define IOCONFIG_FILE "/etc/ioconfig"
#define MAX_ID 16
#define NONE -1
typedef char io_name_type[MAX_ID];
typedef struct {
int parent; /* parent in io_tree */
int sibling; /* sibling in io_tree */
int child; /* child in io_tree */
io_name_type manager; /* manager name */
io_name_type module; /* module name */
io_name_type class; /* device class */
int lu; /* logical unit number */
int hdw_address; /* hardware address */
} ioconfig_entry;
The definitions of each element are as follows:
- parent, sibling, child
Each of the parent, sibling, and child fields
is the array index of another
ioconfig
structure within the file.
This allows the file to represent the tree structure of the kernel
io_tree
without using pointers.
The value
NONE
indicates there is no node of the appropriate type.
- hdw_address
Hardware address of the entity.
The value
NONE
indicates the node corresponds to a manager
controlling a logical device (one without a hardware address).
- manager
A
NULL-terminated character string representing the manager name.
- module
A
NULL-terminated character string representing the module name.
- class
A
NULL-terminated character string representing the device class.
- lu
Logical unit associated with this particular node by the user.
Meaningful only for leaf nodes; has the value
NONE
for all others.
There can be multiple chains of nodes in
ioconfig
with the same manager names, module names,
and/or hardware addresses,
provided each manager name/lu pair
uniquely identifies a single leaf node.
AUTHOR
ioconfig
was developed by HP.