--- libdevinfo.3lib.orig	Mon Jan 28 10:48:24 2008
+++ libdevinfo.3lib	Fri Feb  1 11:24:29 2008
@@ -1,4 +1,6 @@
+Source-of-change: 	http://sac.sfbay/PSARC/1999/647/
+
 Interface Libraries                              libdevinfo(3LIB)
 
 NAME
      libdevinfo - device information library
@@ -12,17 +14,19 @@
      mation.
 
      Device configuration data is organized as a tree of device nodes,
      defined as di_node_t in the libdevinfo interfaces.  Each di_node_t
-     represents a physical or logical (pseudo) device. Three types of
-     data are associated with device nodes:
+     represents a physical or logical (pseudo) device. Four types of
+     data are associated with the tree:
 
          o    data defined for all device nodes (attributes)
 
-         o    properties specific to each device
+	 o data defined for all multipath path nodes
 
-         o    minor node data
+         o data defined for all minor node data
 
+         o properties specific to nodes
+
      All device nodes have a set of common attributes, such as  a
      node  name,  an  instance number, and a driver binding name.
      Common device node attributes are accessed by calling inter-
      faces  listed  on the di_binding_name(3DEVINFO) manual page.
@@ -45,14 +49,38 @@
      required.
 
      Minor nodes contain information exported by the  device  for
      creating  special files for the device. Each device node has
-     0 or more minor nodes associated with it. A list minor nodes
+     0 or more minor nodes associated with it. A list of minor nodes
      (di_minor_t)  can  be obtained by making successive calls to
      di_minor_next(3DEVINFO) until DI_MINOR_NIL is returned.  For
      each  minor node, di_minor_devt(3DEVINFO) and related inter-
      faces are called to get minor node data.
 
+     In some configurations, multipath device access via a virtual host
+     controller interface (vHCI) abstraction is possible.  An example
+     of a driver using this abstraction is scsi_vhci(7D). In such
+     cases, devices are not directly represented as children of their
+     physical host controller interface (pHCI) bus adapter.  Instead,
+     devices have an identity-oriented representation as a child of a
+     vHCI.  All paths leading to the same identity are represented by a
+     common child endpoint of the vHCI called the 'client' device
+     node.  The vHCI virtualizes access among the underlying pHCI
+     physical paths.  The underlying connection between vHCI-managed
+     client endpoints and the pHCI paths to that endpoint is
+     represented by a class of nodes called 'path' nodes (di_path_t).
+
+     Each path node is associated with two device nodes: its pHCI
+     device node, and its client device node.  A list of paths
+     associated with a specific pHCI device node can be obtained using
+     di_path_phci_next_path(3DEVINFO), and a list of paths associated
+     with a specific client device node can be obtained using
+     di_path_client_next_path(3DEVINFO).  These interfaces returning
+     DI_PATH_NIL when the end of the list of path nodes is reached.
+
+     For each path node, di_path_state(3DEVINFO) and related interfaces
+     are called to get path node data.
+
      Using libdevinfo involves three steps:
 
          o    Creating a snapshot of the device tree
 
@@ -105,8 +133,9 @@
      The shared object libdevinfo.so.1 provides the public inter-
      faces defined below. See Intro(3) for additional information
      on shared object interfaces.
 
+
      di_binding_name               
      di_bus_addr
      di_child_node                 
      di_compatible_names
@@ -142,12 +171,34 @@
      di_minor_private_set
      di_minor_spectype             
      di_minor_type
      di_node_name                  
-     di_nodeid
-     di_parent_node                
      di_node_private_get
      di_node_private_set           
+     di_nodeid
+     di_parent_node                
+     di_path_bus_addr
+     di_path_client_devfs_path
+     di_path_client_next_path
+     di_path_client_node
+     di_path_devfs_path
+     di_path_instance
+     di_path_node_name
+     di_path_phci_next_path
+     di_path_phci_node
+     di_path_prop_bytes
+     di_path_prop_int64s
+     di_path_prop_ints
+     di_path_prop_len
+     di_path_prop_lookup_bytes
+     di_path_prop_lookup_int64s
+     di_path_prop_lookup_ints
+     di_path_prop_lookup_strings
+     di_path_prop_name
+     di_path_prop_strings
+     di_path_prop_next
+     di_path_prop_type
+     di_path_state
      di_prom_fini
      di_prom_init                  
      di_prom_prop_data
      di_prom_prop_lookup_bytes     
@@ -173,8 +224,9 @@
      di_walk_lnode                 
      di_walk_minor
      di_walk_node
 
+
      Example 1 Information accessible through  libdevinfo  inter-
      faces
 
 
@@ -234,20 +286,20 @@
 
      di_binding_name(3DEVINFO),          
      di_child_node(3DEVINFO),
      di_devfs_path(3DEVINFO),        
-     di_drv_first_node(3DEVINFO),
-     di_drv_next_node(3DEVINFO),               
-     di_fini(3DEVINFO),
-     di_prom_init(3DEVINFO),             
+     di_init(3DEVINFO),
      di_minor_devt(3DEVINFO),
      di_minor_next(3DEVINFO),             
-     di_prom_fini(3DEVINFO),
+     di_path_bus_addr(3DEVINFO)
+     di_path_client_next_path(3DEVINFO)
+     di_path_prop_bytes(3DEVINFO)
+     di_path_prop_lookup_bytes(3DEVINFO)
+     di_path_prop_next(3DEVINFO)
      di_prom_init(3DEVINFO),             
      di_prop_bytes(3DEVINFO),
      di_prop_lookup_bytes(3DEVINFO),      
      di_prop_next(3DEVINFO),
-     di_sibling_node(3DEVINFO),          
      di_walk_minor(3DEVINFO),
      di_walk_node(3DEVINFO), 
 
      attributes(5)
