OpenBoot 2.x Command Reference Manual

Device Path Names, Addresses, and Arguments

The firmware deals directly with hardware devices in the system. Each device has a unique name representing the type of device and where that device is located within the system addressing structure. The following example shows a full device path name:

/sbus@1,f8000000/esp@0,40000/sd@3,0:a

A full device path name is a series of node names separated by slashes (/). The root of the tree is the machine node, which is not named explicitly but is indicated by a leading slash (/). Each node name has the form:

name@address:arguments

The following table describes each of these parameters.

Table 1-2 Device Path Name Parameters

Path Name Parameter 

Description 

name

A text string that, ideally, has some mnemonic value. (For example, sd represents "SCSI disk".) Many names, especially names of plug-in modules, include the name or stock symbol of the device's manufacturer (for example, SUNW,esp).

@

Must precede the address parameter.

address

A text string representing an address, usually of the form hex_number,hex_number. (Numbers are given in hexadecimal format.)

:

Must precede the arguments parameter.

arguments

A text string, whose format depends on the particular device. It can be used to pass additional information to the device's software. 

The full device path name mimics the hardware addressing used by the system to distinguish between different devices. Thus, you can specify a particular device without ambiguity.

In general, the address part of a node name represents an address in the address space of its parent. The exact meaning of a particular address depends on the bus to which the device is attached. Consider the same example:

/sbus@1,f8000000/esp@0,40000/sd@3,0:a

When specifying a path name, either the @address or name part of a node name is optional, in which case the firmware tries to pick the device that best matches the given name. If more than one equally-good selection exists, the firmware makes a selection (but it may not be the one you want).

For example, using /sbus/esp@0,40000/sd@3,0 assumes that the system in question has exactly one SBus interface on the main system bus, making sbus as unambiguous an address as sbus@1,f8000000. On the same system, however, /sbus/esp/sd@3,0 might or might not be ambiguous. Since SBus accepts plug-in cards, there could be more than one esp device on the same SBus. If there were more than one on the system, using esp alone would not specify which one, and the firmware might not select the one you intended.

As another example, /sbus/@0,40000/sd@3,0 would normally be acceptable while /sbus/esp@0,40000/@3,0 usually would not, since both a SCSI disk device driver (sd) and a SCSI tape device driver (st) can use the SCSI target,logical unit address 3,0.

The :arguments part of the node name is also optional. Once again, in the example:

/sbus@1,f8000000/esp@0,40000/sd@3,0:a

the argument for the sd device is the string a. The software driver for sd interprets its argument as a disk partition, so the device path name refers to partition a on that disk.