[ Previous | Next | Contents | Home | Search ]
AIX Version 4.3 Kernel and Subsystems Technical Reference, Volume 2

Predefined Devices (PdDv) Object Class

Description

The Predefined Devices (PdDv) object class contains entries for all device types currently on the system. It can also contain additional device types if the user has specifically installed certain packages that contain device support for devices that are not on the system. The term devices is used generally to mean both intermediate devices (for example, adapters) and terminal devices (for example, disks, printers, display terminals, and keyboards). Pseudo-devices (for example, pseudo terminals, logical volumes, and TCP/IP) are also included there. Pseudo-devices can either be intermediate or terminal devices.

Each device type, as determined by class-subclass-type information, is represented by an object in the PdDv object class. These objects contain basic information about the devices, such as device method names and instructions for accessing information contained in other object classes. The PdDv object class is referenced by the Customized Devices (CuDv) object class using a link that keys into the Unique Type descriptor. This descriptor is uniquely identified by the class-subclass-type information.

Typically, the Predefined database is consulted but never modified during system boot or run time, except when a new device is added to the Predefined database. In this case, the predefined information for the new device must be added into the Predefined database. However, any new predefined information for a new base device must be written to the boot file system to be effective. This is done with the bosboot command.

You build a Predefined Device object by defining the objects in a file in stanza format and then processing the file with the odmadd command or the odm_add_obj subroutine. See the odmadd command or the odm_add_obj subroutine for information on creating the input file and compiling the object definitions into objects.

Note: When coding an object in this object class, set unused empty strings to "" (two double-quotation marks with no separating space) and unused integer fields to 0 (zero).

Descriptors

Each Predefined Devices object corresponds to an instance of the PdDv object class. The descriptors for the Predefined Devices object class are as follows:

Predefined Devices
ODM Type Descriptor Name Description Descriptor Status
ODM_CHAR type[TYPESIZE] Device Type Required
ODM_CHAR class[CLASSIZE] Device Class Required
ODM_CHAR subclass[CLASSIZE] Device Subclass Required
ODM_CHAR prefix[PREFIXSIZE] Prefix Name Required
ODM_CHAR devid[DEVIDSIZE] Device ID Optional
ODM_SHORT base Base Device Flag Required
ODM_SHORT has_vpd VPD Flag Required
ODM_SHORT detectable Detectable/Non- detectable Flag Required
ODM_SHORT chgstatus Change Status Flag Required
ODM_SHORT bus_ext Bus Extender Flag Required
ODM_SHORT inventory_only Inventory Only Flag Required
ODM_SHORT fru FRU Flag Required
ODM_SHORT led LED Value Required
ODM_SHORT setno Set Number Required
ODM_SHORT msgno Message Number Required
ODM_VCHAR catalog[CATSIZE] Catalog File Name Required
ODM_CHAR DvDr[DDNAMESIZE] Device Driver Name Optional
ODM_METHOD Define Define Method Required
ODM_METHOD Configure Configure Method Required
ODM_METHOD Change Change Method Required
ODM_METHOD Unconfigure Unconfigure Method Optional*
ODM_METHOD Undefine Undefine Method Optional*
ODM_METHOD Start Start Method Optional
ODM_METHOD Stop Stop Method Optional
ODM_CHAR uniquetype[UNIQUESIZE] Unique Type Required

These descriptors are described as follows:

Device Type Specifies the product name or model number. For example, IBM 3812-2 Model 2 Page printer and IBM 4201 Proprinter II are two types of printer device types. Each device type supported by the system should have an entry in the PdDv object class.
Device Class Specifies the functional class name. A functional class is a group of device instances sharing the same high-level function. For example, printer is a functional class name representing all devices that generate hardcopy output.
Device Subclass Identifies the device subclass associated with the device type. A device class can be partitioned into a set of device subclasses whose members share the same interface and typically are managed by the same device driver. For example, parallel and serial printers form two subclasses within the class of printer devices.

The configuration process uses the subclass to determine valid parent-child connections. For example, an rs232 8-port adapter has information that indicates that each of its eight ports only supports devices whose subclass is rs232. Also, the subclass for one device class can be a subclass for a different device class. In other words, several device classes can have the same device subclass.

Prefix Name Specifies the Assigned Prefix in the Customized database, which is used to derive the device instance name and /dev name. For example, tty is a Prefix Name assigned to the tty port device type. Names of tty port instances would then look like tty0 , tty1 , or tty2 . The rules for generating device instance names are given in the Customized Devices object class under the Device Name descriptor.
Device ID Describes card IDs for Micro Channel adapter cards. These card IDs are read from POS registers and uniquely identify the card type. The bus Configure method obtains the card IDs from the Micro Channel adapter cards and uses this descriptor to find the predefined information corresponding to the cards. The format is 0xAABB , where AA identifies the POS(0) value and BB the POS(1) value. This field should be set to a null string for all other devices.
Base Device Flag A base device is any device that forms part of a minimal base system. During the first phase of system boot, a minimal base system is configured to permit access to the root volume group and hence to the root file system. This minimal base system can include, for example, the standard I/O diskette adapter and a SCSI hard drive.

The Base Device flag is a bit mask representing the type of boot for which the device is considered a base device. The bosboot command uses this flag to determine what predefined device information to save in the boot file system. The savebase command uses this flag to determine what customized device information to save in the boot file system. Under certain conditions, the cfgmgr command also uses the Base Device flag to determine whether to configure a device.

VPD Flag Specifies whether device instances belonging to the device type contain extractable vital product data (VPD). Certain devices contain VPD that can be retrieved from the device itself. A value of TRUE means that the device has extractable VPD, and a value of FALSE that it does not. These values are defined in the /usr/include/sys/cfgdb.h file.
Detectable/Nondetectable Flag Specifies whether the device instance is detectable or nondetectable. A device whose presence and type can be electronically determined, once it is actually powered on and attached to the system, is said to be detectable. A value of TRUE means that the device is detectable, and a value of FALSE that it is not. These values are defined in the /usr/include/sys/cfgdb.h file.
Change Status Flag Indicates the initial value of the Change Status flag used in the Customized Devices (CuDv) object class. Refer to the corresponding descriptor in the CuDv object class for a complete description of this flag. A value of NEW means that the device is to be flagged as new, and a value of DONT_CARE means "it is not important." These values are defined in the /usr/include/sys/cfgdb.h file.
Bus Extender Flag Indicates that the device is a bus extender. The Bus Configurator uses the Bus Extender flag descriptor to determine whether it should directly invoke the device's Configure method. A value of TRUE means that the device is a bus extender, and a value of FALSE that it is not. These values are defined in the /usr/include/sys/cfgdb.h file.

This flag is further described in "Device Methods for Adapter Cards: Guidelines".

Inventory Only Flag Distinguishes devices that are represented solely for their replacement algorithm from those that actually manage the system. There are several devices that are represented solely for inventory or diagnostic purposes. Racks, drawers, and planars represent such devices. A value of TRUE means that the device is used solely for inventory or diagnostic purposes, and a value of FALSE that it is not used solely for diagnostic or inventory purposes. These values are defined in the /usr/include/sys/cfgdb.h file
FRU Flag Identifies the type of field replaceable unit (FRU) for the device. The three possible values for this field are:
NO_FRU Indicates that there is no FRU (for pseudo-devices).
SELF_FRU Indicates that the device is its own FRU.
PARENT_FRU Indicates that the FRU is the parent.

These values are defined in the /usr/include/sys/cfgdb.h file.

LED Value Indicates the hexadecimal value displayed on the LEDs when the Configure method executes. Refer to the AIX Version 4.3 Problem Solving Guide and Reference for a list of valid LED values.
Catalog File Name Identifies the file name of the NLS message catalog that contains all messages pertaining to this device. This includes the device description and its attribute descriptions. All NLS messages are identified by a catalog file name, set number, and message number.
Set Number Identifies the set number that contains all the messages for this device in the specified NLS message catalog. This includes the device description and its attribute descriptions.
Message Number Identifies the message number in the specified set of the NLS message catalog. The message corresponding to the message number contains the textual description of the device.
Device Driver Name Identifies the base name of the device driver associated with all device instances belonging to the device type. For example, a device driver name for a keyboard could be ktsdd . For the tape device driver, the name could be tapedd . The Device Driver Name descriptor can be passed as a parameter to the loadext routine to load the device driver, if the device driver is located in the /usr/lib/drivers directory. If the driver is located in a different directory, the full path must be appended in front of the Device Driver Name descriptor before passing it as a parameter to the loadext subroutine.
Define Method Names the Define method associated with the device type. All Define method names start with the def prefix.
Configure Method Names the Configure method associated with the device type. All Configure method names start with the cfg prefix.
Change Method Names the Change method associated with the device type. All Change method names start with the chg prefix.
Unconfigure Method Names the Unconfigure method associated with the device type. All Unconfigure method names start with the ucfg prefix.
Note: The Optional* descriptor status indicates that this field is optional for those devices (for example, the bus) that are never unconfigured or undefined. For all other devices, this descriptor is required.
Undefine Method Names the Undefine method associated with the device type. All Undefine method names start with the und prefix.
Note: The Optional* descriptor status indicates that this field is optional for those devices (for example, the bus) that are never unconfigured or undefined. For all other devices, this descriptor is required.
Start Method Names the Start method associated with the device type. All Start method names start with the stt prefix. The Start method is optional and only applies to devices that support the Stopped device state.
Stop Method Names the Stop method associated with the device type. All Stop method names start with the stp prefix. The Stop method is optional and only applies to devices that support the Stopped device state.
Unique Type A key that is referenced by the PdDvLn link in CuDv object class. The key is a concatenation of the Device Class, Device Subclass, and Device Type values with a / (slash) used as a separator. For example, for a class of disk , a subclass of scsi , and a type of 670mb , the Unique Type is disk/scsi/670mb .

This descriptor is needed so that a device instance's object in the CuDv object class can have a link to its corresponding PdDv object. Other object classes in both the Predefined and Customized databases also use the information contained in this descriptor.

Files

/usr/lib/drivers directory Contains device drivers.

Related Information

ODM Device Configuration Object Classes.

Customized Devices (CuDv) object class.

The loadext subroutine, odm_add_obj subroutine.

The odmadd command.

Writing a Define Method, Writing a Configure Method, Writing a Change Method, Writing an Undefine Method, Writing an Unconfigure Method, Writing Optional Start and Stop Methods.


[ Previous | Next | Contents | Home | Search ]