summaryrefslogtreecommitdiff
path: root/usr/src/man/man3devinfo
diff options
context:
space:
mode:
authorRichard Lowe <richlowe@richlowe.net>2011-03-14 14:05:30 -0400
committerRichard Lowe <richlowe@richlowe.net>2011-03-14 14:05:30 -0400
commitc10c16dec587a0662068f6e2991c29ed3a9db943 (patch)
treef414286f4bba41d75683ed4fbbaa6bfa4bf7fabd /usr/src/man/man3devinfo
parent68caef18a23a498d9e3017b983562c0f4fd8ab23 (diff)
downloadillumos-joyent-c10c16dec587a0662068f6e2991c29ed3a9db943.tar.gz
243 system manual pages should live with the software
Reviewed by: garrett@nexenta.com Reviewed by: gwr@nexenta.com Reviewed by: trisk@opensolaris.org Approved by: gwr@nexenta.com --HG-- extra : rebase_source : 0c599d0bec0dc8865fbba67721a7a6cd6b1feefb
Diffstat (limited to 'usr/src/man/man3devinfo')
-rw-r--r--usr/src/man/man3devinfo/Makefile209
-rw-r--r--usr/src/man/man3devinfo/di_binding_name.3devinfo193
-rw-r--r--usr/src/man/man3devinfo/di_child_node.3devinfo180
-rw-r--r--usr/src/man/man3devinfo/di_devfs_path.3devinfo170
-rw-r--r--usr/src/man/man3devinfo/di_devlink_dup.3devinfo100
-rw-r--r--usr/src/man/man3devinfo/di_devlink_init.3devinfo186
-rw-r--r--usr/src/man/man3devinfo/di_devlink_path.3devinfo97
-rw-r--r--usr/src/man/man3devinfo/di_devlink_walk.3devinfo182
-rw-r--r--usr/src/man/man3devinfo/di_init.3devinfo320
-rw-r--r--usr/src/man/man3devinfo/di_link_next_by_node.3devinfo153
-rw-r--r--usr/src/man/man3devinfo/di_link_spectype.3devinfo104
-rw-r--r--usr/src/man/man3devinfo/di_lnode_name.3devinfo119
-rw-r--r--usr/src/man/man3devinfo/di_lnode_next.3devinfo111
-rw-r--r--usr/src/man/man3devinfo/di_minor_devt.3devinfo100
-rw-r--r--usr/src/man/man3devinfo/di_minor_next.3devinfo115
-rw-r--r--usr/src/man/man3devinfo/di_node_private_set.3devinfo228
-rw-r--r--usr/src/man/man3devinfo/di_path_bus_addr.3devinfo171
-rw-r--r--usr/src/man/man3devinfo/di_path_client_next_path.3devinfo151
-rw-r--r--usr/src/man/man3devinfo/di_path_prop_bytes.3devinfo247
-rw-r--r--usr/src/man/man3devinfo/di_path_prop_lookup_bytes.3devinfo159
-rw-r--r--usr/src/man/man3devinfo/di_path_prop_next.3devinfo117
-rw-r--r--usr/src/man/man3devinfo/di_prom_init.3devinfo84
-rw-r--r--usr/src/man/man3devinfo/di_prom_prop_data.3devinfo139
-rw-r--r--usr/src/man/man3devinfo/di_prom_prop_lookup_bytes.3devinfo161
-rw-r--r--usr/src/man/man3devinfo/di_prop_bytes.3devinfo254
-rw-r--r--usr/src/man/man3devinfo/di_prop_lookup_bytes.3devinfo172
-rw-r--r--usr/src/man/man3devinfo/di_prop_next.3devinfo114
-rw-r--r--usr/src/man/man3devinfo/di_walk_link.3devinfo151
-rw-r--r--usr/src/man/man3devinfo/di_walk_lnode.3devinfo139
-rw-r--r--usr/src/man/man3devinfo/di_walk_minor.3devinfo186
-rw-r--r--usr/src/man/man3devinfo/di_walk_node.3devinfo164
31 files changed, 4976 insertions, 0 deletions
diff --git a/usr/src/man/man3devinfo/Makefile b/usr/src/man/man3devinfo/Makefile
new file mode 100644
index 0000000000..b87b42307f
--- /dev/null
+++ b/usr/src/man/man3devinfo/Makefile
@@ -0,0 +1,209 @@
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source. A copy of the CDDL is also available via the Internet
+# at http://www.illumos.org/license/CDDL.
+#
+
+# Copyright 2011, Richard Lowe
+
+include ../../Makefile.master
+
+MANSECT = 3devinfo
+
+MANFILES = di_binding_name.3devinfo \
+ di_child_node.3devinfo \
+ di_devfs_path.3devinfo \
+ di_devlink_dup.3devinfo \
+ di_devlink_init.3devinfo \
+ di_devlink_path.3devinfo \
+ di_devlink_walk.3devinfo \
+ di_init.3devinfo \
+ di_link_next_by_node.3devinfo \
+ di_link_spectype.3devinfo \
+ di_lnode_name.3devinfo \
+ di_lnode_next.3devinfo \
+ di_minor_devt.3devinfo \
+ di_minor_next.3devinfo \
+ di_node_private_set.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_prom_prop_data.3devinfo \
+ di_prom_prop_lookup_bytes.3devinfo \
+ di_prop_bytes.3devinfo \
+ di_prop_lookup_bytes.3devinfo \
+ di_prop_next.3devinfo \
+ di_walk_link.3devinfo \
+ di_walk_lnode.3devinfo \
+ di_walk_minor.3devinfo \
+ di_walk_node.3devinfo
+
+MANSOFILES = di_bus_addr.3devinfo \
+ di_compatible_names.3devinfo \
+ di_devfs_minor_path.3devinfo \
+ di_devfs_path_free.3devinfo \
+ di_devid.3devinfo \
+ di_devlink_content.3devinfo \
+ di_devlink_fini.3devinfo \
+ di_devlink_free.3devinfo \
+ di_devlink_type.3devinfo \
+ di_driver_major.3devinfo \
+ di_driver_name.3devinfo \
+ di_driver_ops.3devinfo \
+ di_drv_first_node.3devinfo \
+ di_drv_next_node.3devinfo \
+ di_fini.3devinfo \
+ di_instance.3devinfo \
+ di_link_next_by_lnode.3devinfo \
+ di_link_private_get.3devinfo \
+ di_link_private_set.3devinfo \
+ di_link_to_lnode.3devinfo \
+ di_lnode_devinfo.3devinfo \
+ di_lnode_devt.3devinfo \
+ di_lnode_private_get.3devinfo \
+ di_lnode_private_set.3devinfo \
+ di_minor_name.3devinfo \
+ di_minor_nodetype.3devinfo \
+ di_minor_private_get.3devinfo \
+ di_minor_private_set.3devinfo \
+ di_minor_spectype.3devinfo \
+ di_node_name.3devinfo \
+ di_node_private_get.3devinfo \
+ di_nodeid.3devinfo \
+ di_parent_node.3devinfo \
+ di_path_client_devfs_path.3devinfo \
+ di_path_client_node.3devinfo \
+ di_path_devfs_path.3devinfo \
+ di_path_instance.3devinfo \
+ di_path_node_name.3devinfo \
+ di_path_phci_next_path.3devinfo \
+ di_path_phci_node.3devinfo \
+ di_path_private_get.3devinfo \
+ di_path_private_set.3devinfo \
+ di_path_prop_int64s.3devinfo \
+ di_path_prop_ints.3devinfo \
+ di_path_prop_lookup_int64s.3devinfo \
+ di_path_prop_lookup_ints.3devinfo \
+ di_path_prop_lookup_strings.3devinfo \
+ di_path_prop_name.3devinfo \
+ di_path_prop_strings.3devinfo \
+ di_path_prop_type.3devinfo \
+ di_path_state.3devinfo \
+ di_prom_fini.3devinfo \
+ di_prom_prop_lookup_ints.3devinfo \
+ di_prom_prop_lookup_strings.3devinfo \
+ di_prom_prop_name.3devinfo \
+ di_prom_prop_next.3devinfo \
+ di_prop_devt.3devinfo \
+ di_prop_int64.3devinfo \
+ di_prop_ints.3devinfo \
+ di_prop_lookup_int64.3devinfo \
+ di_prop_lookup_ints.3devinfo \
+ di_prop_lookup_strings.3devinfo \
+ di_prop_name.3devinfo \
+ di_prop_strings.3devinfo \
+ di_prop_type.3devinfo \
+ di_sibling_node.3devinfo
+
+MANFILES += $(MANSOFILES)
+
+di_bus_addr.3devinfo := SOSRC = man3devinfo/di_binding_name.3devinfo
+di_compatible_names.3devinfo := SOSRC = man3devinfo/di_binding_name.3devinfo
+di_devid.3devinfo := SOSRC = man3devinfo/di_binding_name.3devinfo
+di_driver_major.3devinfo := SOSRC = man3devinfo/di_binding_name.3devinfo
+di_driver_name.3devinfo := SOSRC = man3devinfo/di_binding_name.3devinfo
+di_driver_ops.3devinfo := SOSRC = man3devinfo/di_binding_name.3devinfo
+di_instance.3devinfo := SOSRC = man3devinfo/di_binding_name.3devinfo
+di_node_name.3devinfo := SOSRC = man3devinfo/di_binding_name.3devinfo
+di_nodeid.3devinfo := SOSRC = man3devinfo/di_binding_name.3devinfo
+
+di_drv_first_node.3devinfo := SOSRC = man3devinfo/di_child_node.3devinfo
+di_drv_next_node.3devinfo := SOSRC = man3devinfo/di_child_node.3devinfo
+di_parent_node.3devinfo := SOSRC = man3devinfo/di_child_node.3devinfo
+di_sibling_node.3devinfo := SOSRC = man3devinfo/di_child_node.3devinfo
+
+di_devfs_minor_path.3devinfo := SOSRC = man3devinfo/di_devfs_path.3devinfo
+di_devfs_path_free.3devinfo := SOSRC = man3devinfo/di_devfs_path.3devinfo
+di_path_client_devfs_path.3devinfo := SOSRC = man3devinfo/di_devfs_path.3devinfo
+di_path_devfs_path.3devinfo := SOSRC = man3devinfo/di_devfs_path.3devinfo
+
+di_devlink_free.3devinfo := SOSRC = man3devinfo/di_devlink_dup.3devinfo
+
+di_devlink_fini.3devinfo := SOSRC = man3devinfo/di_devlink_init.3devinfo
+
+di_devlink_content.3devinfo := SOSRC = man3devinfo/di_devlink_path.3devinfo
+di_devlink_type.3devinfo := SOSRC = man3devinfo/di_devlink_path.3devinfo
+
+di_fini.3devinfo := SOSRC = man3devinfo/di_init.3devinfo
+
+di_link_next_by_lnode.3devinfo := SOSRC = man3devinfo/di_link_next_by_node.3devinfo
+
+di_link_to_lnode.3devinfo := SOSRC = man3devinfo/di_link_spectype.3devinfo
+
+di_lnode_devinfo.3devinfo := SOSRC = man3devinfo/di_lnode_name.3devinfo
+di_lnode_devt.3devinfo := SOSRC = man3devinfo/di_lnode_name.3devinfo
+
+di_minor_name.3devinfo := SOSRC = man3devinfo/di_minor_devt.3devinfo
+di_minor_nodetype.3devinfo := SOSRC = man3devinfo/di_minor_devt.3devinfo
+di_minor_spectype.3devinfo := SOSRC = man3devinfo/di_minor_devt.3devinfo
+
+di_link_private_get.3devinfo := SOSRC = man3devinfo/di_node_private_set.3devinfo
+di_link_private_set.3devinfo := SOSRC = man3devinfo/di_node_private_set.3devinfo
+di_lnode_private_get.3devinfo := SOSRC = man3devinfo/di_node_private_set.3devinfo
+di_lnode_private_set.3devinfo := SOSRC = man3devinfo/di_node_private_set.3devinfo
+di_minor_private_get.3devinfo := SOSRC = man3devinfo/di_node_private_set.3devinfo
+di_minor_private_set.3devinfo := SOSRC = man3devinfo/di_node_private_set.3devinfo
+di_node_private_get.3devinfo := SOSRC = man3devinfo/di_node_private_set.3devinfo
+di_path_private_get.3devinfo := SOSRC = man3devinfo/di_node_private_set.3devinfo
+di_path_private_set.3devinfo := SOSRC = man3devinfo/di_node_private_set.3devinfo
+
+di_path_client_node.3devinfo := SOSRC = man3devinfo/di_path_bus_addr.3devinfo
+di_path_instance.3devinfo := SOSRC = man3devinfo/di_path_bus_addr.3devinfo
+di_path_node_name.3devinfo := SOSRC = man3devinfo/di_path_bus_addr.3devinfo
+di_path_phci_node.3devinfo := SOSRC = man3devinfo/di_path_bus_addr.3devinfo
+di_path_state.3devinfo := SOSRC = man3devinfo/di_path_bus_addr.3devinfo
+
+di_path_phci_next_path.3devinfo := SOSRC = man3devinfo/di_path_client_next_path.3devinfo
+
+di_path_prop_int64s.3devinfo := SOSRC = man3devinfo/di_path_prop_bytes.3devinfo
+di_path_prop_ints.3devinfo := SOSRC = man3devinfo/di_path_prop_bytes.3devinfo
+di_path_prop_name.3devinfo := SOSRC = man3devinfo/di_path_prop_bytes.3devinfo
+di_path_prop_strings.3devinfo := SOSRC = man3devinfo/di_path_prop_bytes.3devinfo
+di_path_prop_type.3devinfo := SOSRC = man3devinfo/di_path_prop_bytes.3devinfo
+
+di_path_prop_lookup_int64s.3devinfo := SOSRC = man3devinfo/di_path_prop_lookup_bytes.3devinfo
+di_path_prop_lookup_ints.3devinfo := SOSRC = man3devinfo/di_path_prop_lookup_bytes.3devinfo
+di_path_prop_lookup_strings.3devinfo := SOSRC = man3devinfo/di_path_prop_lookup_bytes.3devinfo
+
+di_prom_fini.3devinfo := SOSRC = man3devinfo/di_prom_init.3devinfo
+
+di_prom_prop_name.3devinfo := SOSRC = man3devinfo/di_prom_prop_data.3devinfo
+di_prom_prop_next.3devinfo := SOSRC = man3devinfo/di_prom_prop_data.3devinfo
+
+di_prom_prop_lookup_ints.3devinfo := SOSRC = man3devinfo/di_prom_prop_lookup_bytes.3devinfo
+di_prom_prop_lookup_strings.3devinfo := SOSRC = man3devinfo/di_prom_prop_lookup_bytes.3devinfo
+
+di_prop_devt.3devinfo := SOSRC = man3devinfo/di_prop_bytes.3devinfo
+di_prop_int64.3devinfo := SOSRC = man3devinfo/di_prop_bytes.3devinfo
+di_prop_ints.3devinfo := SOSRC = man3devinfo/di_prop_bytes.3devinfo
+di_prop_name.3devinfo := SOSRC = man3devinfo/di_prop_bytes.3devinfo
+di_prop_strings.3devinfo := SOSRC = man3devinfo/di_prop_bytes.3devinfo
+di_prop_type.3devinfo := SOSRC = man3devinfo/di_prop_bytes.3devinfo
+
+di_prop_lookup_int64.3devinfo := SOSRC = man3devinfo/di_prop_lookup_bytes.3devinfo
+di_prop_lookup_ints.3devinfo := SOSRC = man3devinfo/di_prop_lookup_bytes.3devinfo
+di_prop_lookup_strings.3devinfo := SOSRC = man3devinfo/di_prop_lookup_bytes.3devinfo
+
+.KEEP_STATE:
+
+include ../Makefile.man
+
+install: $(ROOTMANFILES)
diff --git a/usr/src/man/man3devinfo/di_binding_name.3devinfo b/usr/src/man/man3devinfo/di_binding_name.3devinfo
new file mode 100644
index 0000000000..990cf8f065
--- /dev/null
+++ b/usr/src/man/man3devinfo/di_binding_name.3devinfo
@@ -0,0 +1,193 @@
+'\" te
+.\" Copyright (c) 2004, Sun Microsystems, Inc. All Rights Reserved.
+.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
+.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
+.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
+.TH di_binding_name 3DEVINFO "22 Mar 2004" "SunOS 5.11" "Device Information Library Functions"
+.SH NAME
+di_binding_name, di_bus_addr, di_compatible_names, di_devid, di_driver_name,
+di_driver_ops, di_driver_major, di_instance, di_nodeid, di_node_name \- return
+libdevinfo node information
+.SH SYNOPSIS
+.LP
+.nf
+\fBcc\fR [ \fIflag\fR... ] \fIfile\fR... \fB-ldevinfo\fR [ \fIlibrary\fR... ]
+#include <libdevinfo.h>
+
+\fBchar *\fR\fBdi_binding_name\fR(\fBdi_node_t\fR \fInode\fR);
+.fi
+
+.LP
+.nf
+\fBchar *\fR\fBdi_bus_addr\fR(\fBdi_node_t\fR \fInode\fR);
+.fi
+
+.LP
+.nf
+\fBint\fR \fBdi_compatible_names\fR(\fBdi_node_t\fR \fInode\fR, \fBchar **\fR\fInames\fR);
+.fi
+
+.LP
+.nf
+\fBddi_devid_t\fR \fBdi_devid\fR(\fBdi_node_t\fR \fInode\fR);
+.fi
+
+.LP
+.nf
+\fBchar *\fR\fBdi_driver_name\fR(\fBdi_node_t\fR \fInode\fR);
+.fi
+
+.LP
+.nf
+\fBuint_t\fR \fBdi_driver_ops\fR(\fBdi_node_t\fR \fInode\fR);
+.fi
+
+.LP
+.nf
+\fBint\fR \fBdi_driver_major\fR(\fBdi_node_t\fR \fInode\fR);
+.fi
+
+.LP
+.nf
+\fBint\fR \fBdi_instance\fR(\fBdi_node_t\fR \fInode\fR);
+.fi
+
+.LP
+.nf
+\fBint\fR \fBdi_nodeid\fR(\fBdi_node_t\fR \fInode\fR);
+.fi
+
+.LP
+.nf
+\fBchar *\fR\fBdi_node_name\fR(\fBdi_node_t\fR \fInode\fR);
+.fi
+
+.SH PARAMETERS
+.sp
+.ne 2
+.mk
+.na
+\fB\fInames\fR\fR
+.ad
+.RS 9n
+.rt
+The address of a pointer.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fInode\fR\fR
+.ad
+.RS 9n
+.rt
+A handle to a device node.
+.RE
+
+.SH DESCRIPTION
+.sp
+.LP
+These functions extract information associated with a device node.
+.SH RETURN VALUES
+.sp
+.LP
+The \fBdi_binding_name()\fR function returns a pointer to the binding name. The
+binding name is the name used by the system to select a driver for the device.
+.sp
+.LP
+The \fBdi_bus_addr()\fR function returns a pointer to a null-terminated string
+containing the assigned bus address for the device. \fBNULL\fR is returned if a
+bus address has not been assigned to the device. A zero-length string may be
+returned and is considered a valid bus address.
+.sp
+.LP
+The return value of \fBdi_compatible_names()\fR is the number of compatible
+names. \fInames\fR is updated to point to a buffer contained within the
+snapshot. The buffer contains a concatenation of null-terminated strings, for
+example:
+.sp
+.in +2
+.nf
+<\fIname1\fR>/0<\fIname2\fR>/0...<\fInamen\fR>/0
+.fi
+.in -2
+
+.sp
+.LP
+See the discussion of generic names in \fIWriting Device Drivers\fR for a
+description of how compatible names are used by Solaris to achieve driver
+binding for the node.
+.sp
+.LP
+The \fBdi_devid()\fR function returns the device \fBID\fR for \fInode\fR, if it
+is registered. Otherwise, a null pointer is returned. Interfaces in the
+\fBlibdevid\fR(3LIB) library may be used to manipulate the handle to the device
+id. This function is obsolete and might be removed from a future Solaris
+release. Applications should use the "devid" property instead.
+.sp
+.LP
+The \fBdi_driver_name()\fR function returns the name of the driver bound to the
+\fInode\fR. A null pointer is returned if \fInode\fR is not bound to any
+driver.
+.sp
+.LP
+The \fBdi_driver_ops()\fR function returns a bit array of device driver entry
+points that are supported by the driver bound to this \fInode\fR. Possible bit
+fields supported by the driver are \fBDI_CB_OPS\fR, \fBDI_BUS_OPS\fR,
+\fBDI_STREAM_OPS\fR.
+.sp
+.LP
+The \fBdi_driver_major()\fR function returns the major number associated with
+the driver bound to \fInode\fR. If there is no driver bound to the node, this
+function returns \(mi1.
+.sp
+.LP
+The \fBdi_instance()\fR function returns the instance number of the device. A
+value of \fB-1\fR indicates an instance number has not been assigned to the
+device by the system.
+.sp
+.LP
+The \fBdi_nodeid()\fR function returns the type of device, which may be one of
+the following possible values: \fBDI_PSEUDO_NODEID\fR, \fBDI_PROM_NODEID\fR,
+and \fBDI_SID_NODEID\fR. Devices of type \fBDI_PROM_NODEID\fR may have
+additional properties that are defined by the \fBPROM\fR. See
+\fBdi_prom_prop_data\fR(3DEVINFO) and
+\fBdi_prom_prop_lookup_bytes\fR(3DEVINFO).
+.sp
+.LP
+The \fBdi_node_name()\fR function returns a pointer to a null-terminated string
+containing the node name.
+.SH EXAMPLES
+.sp
+.LP
+See \fBdi_init\fR(3DEVINFO) for an example demonstrating typical use of these
+functions.
+.SH ATTRIBUTES
+.sp
+.LP
+See \fBattributes\fR(5) for descriptions of the following attributes:
+.sp
+
+.sp
+.TS
+tab() box;
+cw(2.75i) |cw(2.75i)
+lw(2.75i) |lw(2.75i)
+.
+ATTRIBUTE TYPEATTRIBUTE VALUE
+_
+Interface StabilityEvolving (\fBdi_devid()\fR is obsolete)
+_
+MT-LevelSafe
+.TE
+
+.SH SEE ALSO
+.sp
+.LP
+\fBdi_init\fR(3DEVINFO), \fBdi_prom_init\fR(3DEVINFO),
+\fBdi_prom_prop_data\fR(3DEVINFO), \fBdi_prom_prop_lookup_bytes\fR(3DEVINFO),
+\fBlibdevid\fR(3LIB), \fBlibdevinfo\fR(3LIB), \fBattributes\fR(5)
+.sp
+.LP
+\fIWriting Device Drivers\fR
diff --git a/usr/src/man/man3devinfo/di_child_node.3devinfo b/usr/src/man/man3devinfo/di_child_node.3devinfo
new file mode 100644
index 0000000000..48a98c20a9
--- /dev/null
+++ b/usr/src/man/man3devinfo/di_child_node.3devinfo
@@ -0,0 +1,180 @@
+'\" te
+.\" Copyright (c) 1998, Sun Microsystems, Inc. All Rights Reserved
+.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
+.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
+.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
+.TH di_child_node 3DEVINFO "1 Dec 1998" "SunOS 5.11" "Device Information Library Functions"
+.SH NAME
+di_child_node, di_parent_node, di_sibling_node, di_drv_first_node,
+di_drv_next_node \- libdevinfo node traversal functions
+.SH SYNOPSIS
+.LP
+.nf
+\fBcc\fR [ \fIflag\fR... ] \fIfile\fR... \fB-ldevinfo\fR [ \fIlibrary\fR... ]
+#include <libdevinfo.h>
+
+\fBdi_node_t\fR \fBdi_child_node\fR(\fBdi_node_t\fR \fInode\fR);
+.fi
+
+.LP
+.nf
+\fBdi_node_t\fR \fBdi_parent_node\fR(\fBdi_node_t\fR \fInode\fR);
+.fi
+
+.LP
+.nf
+\fBdi_node_t\fR \fBdi_sibling_node\fR(\fBdi_node_t\fR \fInode\fR);
+.fi
+
+.LP
+.nf
+\fBdi_node_t\fR \fBdi_drv_first_node\fR(\fBconst char *\fR\fIdrv_name\fR, \fBdi_node_t\fR \fIroot\fR);
+.fi
+
+.LP
+.nf
+\fBdi_node_t\fR \fBdi_drv_next_node\fR(\fBdi_node_t\fR \fInode\fR);
+.fi
+
+.SH PARAMETERS
+.sp
+.ne 2
+.mk
+.na
+\fB\fIdrv_name\fR\fR
+.ad
+.RS 12n
+.rt
+The name of the driver of interest.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fInode\fR\fR
+.ad
+.RS 12n
+.rt
+A handle to any node in the snapshot.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIroot\fR\fR
+.ad
+.RS 12n
+.rt
+The handle of the root node for the snapshot returned by
+\fBdi_init\fR(3DEVINFO).
+.RE
+
+.SH DESCRIPTION
+.sp
+.LP
+The kernel device configuration data may be viewed in two ways, either as a
+tree of device configuration nodes or as a list of nodes associated with each
+driver. In the tree view, each node may contain references to its parent, the
+next sibling in a list of siblings, and the first child of a list of children.
+In the per-driver view, each node contains a reference to the next node
+associated with the same driver. Both views are captured in the snapshot, and
+the interfaces are provided for node access.
+.sp
+.LP
+The \fBdi_child_node()\fR function obtains a handle to the first child of
+\fInode\fR. If no child node exists in the snapshot, \fBDI_NODE_NIL\fR is
+returned and \fIerrno\fR is set to \fBENXIO\fR or \fBENOTSUP\fR.
+.sp
+.LP
+The \fBdi_parent_node()\fR function obtains a handle to the parent node of
+\fInode\fR. If no parent node exists in the snapshot, \fBDI_NODE_NIL\fR is
+returned and \fIerrno\fR is set to \fBENXIO\fR or \fBENOTSUP\fR.
+.sp
+.LP
+The \fBdi_sibling_node()\fR function obtains a handle to the next sibling node
+of \fInode\fR. If no next sibling node exists in the snapshot,
+\fBDI_NODE_NIL\fR is returned and \fIerrno\fR is set to \fBENXIO\fR or
+\fBENOTSUP\fR.
+.sp
+.LP
+The \fBdi_drv_first_node()\fR function obtains a handle to the first node
+associated with the driver specified by \fBdrv_name\fR. If there is no such
+driver, \fBDI_NODE_NIL\fR is returned with \fIerrno\fR is set to \fBEINVAL\fR.
+If the driver exists but there is no node associated with this driver,
+\fBDI_NODE_NIL\fR is returned and \fIerrno\fR is set to \fBENXIO\fR or
+\fBENOTSUP\fR.
+.sp
+.LP
+The \fBdi_drv_next_node()\fR function returns a handle to the next node bound
+to the same driver. If no more nodes exist, \fBDI_NODE_NIL\fR is returned.
+.SH RETURN VALUES
+.sp
+.LP
+Upon successful completion, a handle is returned. Otherwise, \fBDI_NODE_NIL\fR
+is returned and \fIerrno\fR is set to indicate the error.
+.SH ERRORS
+.sp
+.LP
+These functions will fail if:
+.sp
+.ne 2
+.mk
+.na
+\fB\fBEINVAL\fR\fR
+.ad
+.RS 11n
+.rt
+The argument is invalid.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBENXIO\fR\fR
+.ad
+.RS 11n
+.rt
+The requested node does not exist.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBENOTSUP\fR\fR
+.ad
+.RS 11n
+.rt
+The node was not found in the snapshot, but it may exist in the kernel. This
+error may occur if the snapshot contains a partial device tree.
+.RE
+
+.SH ATTRIBUTES
+.sp
+.LP
+See \fBattributes\fR(5) for descriptions of the following attributes:
+.sp
+
+.sp
+.TS
+tab() box;
+cw(2.75i) |cw(2.75i)
+lw(2.75i) |lw(2.75i)
+.
+ATTRIBUTE TYPEATTRIBUTE VALUE
+_
+Interface StabilityEvolving
+_
+MT-LevelSafe
+.TE
+
+.SH SEE ALSO
+.sp
+.LP
+\fBdi_init\fR(3DEVINFO), \fBlibdevinfo\fR(3LIB), \fBattributes\fR(5)
+.sp
+.LP
+\fIWriting Device Drivers\fR
diff --git a/usr/src/man/man3devinfo/di_devfs_path.3devinfo b/usr/src/man/man3devinfo/di_devfs_path.3devinfo
new file mode 100644
index 0000000000..c73341ae4f
--- /dev/null
+++ b/usr/src/man/man3devinfo/di_devfs_path.3devinfo
@@ -0,0 +1,170 @@
+'\" te
+.\" Copyright (c) 2008, Sun Microsystems, Inc. All Rights Reserved.
+.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
+.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
+.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
+.TH di_devfs_path 3DEVINFO "15 May 2008" "SunOS 5.11" "Device Information Library Functions"
+.SH NAME
+di_devfs_path, di_devfs_minor_path, di_path_devfs_path,
+di_path_client_devfs_path, di_devfs_path_free \- generate and free path names
+.SH SYNOPSIS
+.LP
+.nf
+\fBcc\fR [ \fIflag\fR... ] \fIfile\fR... \fB-ldevinfo\fR [ \fIlibrary\fR... ]
+#include <libdevinfo.h>
+
+\fBchar *\fR\fBdi_devfs_path\fR(\fBdi_node_t\fR \fInode\fR);
+.fi
+
+.LP
+.nf
+\fBchar *\fR\fBdi_devfs_minor_path\fR(\fBdi_minor_t\fR \fIminor\fR);
+.fi
+
+.LP
+.nf
+\fBchar *\fR\fBdi_path_devfs_path\fR(\fBdi_path_t\fR \fIpath\fR);
+.fi
+
+.LP
+.nf
+\fBchar *\fR\fBdi_path_client_devfs_path\fR(\fBdi_path_t\fR \fIpath\fR);
+.fi
+
+.LP
+.nf
+\fBvoid\fR \fBdi_devfs_path_free\fR(\fBchar *\fR\fIpath_buf\fR);
+.fi
+
+.SH PARAMETERS
+.sp
+.ne 2
+.mk
+.na
+\fB\fInode\fR\fR
+.ad
+.RS 12n
+.rt
+The handle to a device node in a \fBdi_init\fR(3DEVINFO) snapshot.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIminor\fR\fR
+.ad
+.RS 12n
+.rt
+The handle to a device minor node in a snapshot.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIpath\fR\fR
+.ad
+.RS 12n
+.rt
+The handle to a device path node in a snapshot.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIpath_buf\fR\fR
+.ad
+.RS 12n
+.rt
+A pointer returned by \fBdi_devfs_path()\fR, \fBdi_devfs_minor_path()\fR,
+\fBdi_path_devfs_path()\fR, or \fBdi_path_client_devfs_path()\fR.
+.RE
+
+.SH DESCRIPTION
+.sp
+.LP
+The \fBdi_devfs_path()\fR function generates the physical path of the device
+node specified by \fInode\fR.
+.sp
+.LP
+The \fBdi_devfs_minor_path()\fR function generates the physical path of the
+device minor node specified by \fIminor\fR.
+.sp
+.LP
+The \fBdi_path_devfs_path()\fR function generates the pHCI physical path to the
+device associated with the specified path node. The returned string is
+identical to the \fBdi_devfs_path()\fR for the device had the device not been
+supported by multipath.
+.sp
+.LP
+The \fBdi_path_client_devfs_path()\fR function generates the vHCI physical path
+of the multipath client device node associated with the device identity of the
+specified path node. The returned string is identical to the
+\fBdi_devfs_path()\fR of the multipath client device node.
+.sp
+.LP
+The \fBdi_devfs_path_free()\fR function frees memory that was allocated to
+store the path returned by \fBdi_devfs_path()\fR, \fBdi_devfs_minor_path()\fR,
+\fBdi_path_devfs_path()\fR, and \fBdi_path_client_devfs_path()\fR. The caller
+is responsible for freeing this memory by calling \fBdi_devfs_path_free()\fR.
+.SH RETURN VALUES
+.sp
+.LP
+Upon successful completion, the \fBdi_devfs_path()\fR,
+\fBdi_devfs_minor_path()\fR, \fBdi_path_devfs_path()\fR, and
+\fBdi_path_client_devfs_path()\fR functions return a pointer to the string
+containing the path to a device node, a device minor node, or a device path
+node, respectively. Otherwise, they return \fINULL\fR and \fBerrno\fR is set to
+indicate the error. For a non-NULL return, the path will not have a
+"/\fBdevices\fR" prefix.
+.SH ERRORS
+.sp
+.LP
+The \fBdi_devfs_path()\fR, \fBdi_devfs_minor_path()\fR,
+\fBdi_path_devfs_path()\fR, and \fBdi_path_client_devfs_path()\fR functions
+will fail if:
+.sp
+.ne 2
+.mk
+.na
+\fB\fBEINVAL\fR\fR
+.ad
+.RS 10n
+.rt
+The \fInode\fR, \fIminor\fR, or \fIpath\fR argument is not a valid handle.
+.RE
+
+.sp
+.LP
+The \fBdi_devfs_path()\fR, \fBdi_devfs_minor_path()\fR,
+\fBdi_path_devfs_path()\fR, and \fBdi_path_client_devfs_path()\fR functions can
+also return any error value returned by \fBmalloc\fR(3C).
+.SH ATTRIBUTES
+.sp
+.LP
+See \fBattributes\fR(5) for descriptions of the following attributes:
+.sp
+
+.sp
+.TS
+tab() box;
+cw(2.75i) |cw(2.75i)
+lw(2.75i) |lw(2.75i)
+.
+ATTRIBUTE TYPEATTRIBUTE VALUE
+_
+Interface StabilityCommitted
+_
+MT-LevelSafe
+.TE
+
+.SH SEE ALSO
+.sp
+.LP
+\fBdi_init\fR(3DEVINFO), \fBlibdevinfo\fR(3LIB), \fBmalloc\fR(3C),
+\fBattributes\fR(5)
+.sp
+.LP
+\fIWriting Device Drivers\fR
diff --git a/usr/src/man/man3devinfo/di_devlink_dup.3devinfo b/usr/src/man/man3devinfo/di_devlink_dup.3devinfo
new file mode 100644
index 0000000000..199b7b820d
--- /dev/null
+++ b/usr/src/man/man3devinfo/di_devlink_dup.3devinfo
@@ -0,0 +1,100 @@
+'\" te
+.\" Copyright (c) 2008, Sun Microsystems, Inc. All Rights Reserved.
+.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
+.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
+.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
+.TH di_devlink_dup 3DEVINFO "15 May 2008" "SunOS 5.11" "Device Information Library Functions"
+.SH NAME
+di_devlink_dup, di_devlink_free \- copy and free a devlink object
+.SH SYNOPSIS
+.LP
+.nf
+\fBcc\fR [ \fIflag\fR... ] \fIfile\fR... \fB-ldevinfo\fR [ \fIlibrary\fR... ]
+#include <libdevinfo.h>
+
+\fBdi_devlink_t\fR \fBdi_devlink_dup\fR(\fBdi_devlink_t\fR \fIdevlink\fR);
+.fi
+
+.LP
+.nf
+\fBint\fR \fBdi_devlink_free\fR(\fBdi_devlink_t\fR \fIdevlink\fR);
+.fi
+
+.SH PARAMETERS
+.sp
+.ne 2
+.mk
+.na
+\fB\fIdevlink\fR\fR
+.ad
+.RS 11n
+.rt
+An opaque handle to a devlink.
+.RE
+
+.SH DESCRIPTION
+.sp
+.LP
+Typically, a \fBdi_devlink_t\fR object is only accessible from within the scope
+of the \fBdi_devlink_walk\fR(3DEVINFO) callback function. The
+\fBdi_devlink_dup()\fR function allows the callback function implementation to
+make a duplicate copy of the \fBdi_devlink_t\fR object. The duplicate copy is
+valid and accessible until \fBdi_devlink_free()\fR is called.
+.sp
+.LP
+The \fBdi_devlink_dup()\fR function returns a copy of a \fIdevlink\fR object.
+The \fBdi_devlink_free()\fR function frees this copy.
+.SH RETURN VALUES
+.sp
+.LP
+Upon successful completion, \fBdi_devlink_dup()\fR returns a copy of the
+\fIdevlink\fR object passed in. Otherwise, \fINULL\fR is returned and
+\fBerrno\fR is set to indicate the error.
+.sp
+.LP
+Upon successful completion, \fBdi_devlink_free()\fR returns 0. Otherwise, -1 is
+returned and \fBerrno\fR is set to indicate the error.
+.SH ERRORS
+.sp
+.LP
+The \fBdi_devlink_dup()\fR and \fBdi_devlink_free()\fR functions will fail if:
+.sp
+.ne 2
+.mk
+.na
+\fB\fBEINVAL\fR\fR
+.ad
+.RS 10n
+.rt
+The \fIdevlink\fR argument is not a valid handle.
+.RE
+
+.sp
+.LP
+The \fBdi_devlink_dup()\fR function can set \fBerrno\fR to any error value that
+can also be set by \fBmalloc\fR(3C).
+.SH ATTRIBUTES
+.sp
+.LP
+See \fBattributes\fR(5) for descriptions of the following attributes:
+.sp
+
+.sp
+.TS
+tab() box;
+cw(2.75i) |cw(2.75i)
+lw(2.75i) |lw(2.75i)
+.
+ATTRIBUTE TYPEATTRIBUTE VALUE
+_
+Interface StabilityCommitted
+_
+MT-LevelSafe
+.TE
+
+.SH SEE ALSO
+.sp
+.LP
+\fBdi_devlink_init\fR(3DEVINFO), \fBdi_devlink_path\fR(3DEVINFO),
+\fBdi_devlink_walk\fR(3DEVINFO), \fBlibdevinfo\fR(3LIB), \fBmalloc\fR(3C),
+\fBattributes\fR(5)
diff --git a/usr/src/man/man3devinfo/di_devlink_init.3devinfo b/usr/src/man/man3devinfo/di_devlink_init.3devinfo
new file mode 100644
index 0000000000..a9699bbd71
--- /dev/null
+++ b/usr/src/man/man3devinfo/di_devlink_init.3devinfo
@@ -0,0 +1,186 @@
+'\" te
+.\" Copyright (c) 2008, Sun Microsystems, Inc. All Rights Reserved.
+.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
+.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
+.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
+.TH di_devlink_init 3DEVINFO "21 Jul 2008" "SunOS 5.11" "Device Information Library Functions"
+.SH NAME
+di_devlink_init, di_devlink_fini \- create and destroy a snapshot of devlinks
+.SH SYNOPSIS
+.LP
+.nf
+\fBcc\fR [ \fIflag\fR... ] \fIfile\fR... \fB-ldevinfo\fR [ \fIlibrary\fR... ]
+#include <libdevinfo.h>
+
+\fBdi_devlink_handle_t\fR \fBdi_devlink_init\fR(\fBconst char *\fR\fIname\fR,
+ \fBuint_t\fR \fIflags\fR);
+.fi
+
+.LP
+.nf
+\fBint\fR \fBdi_devlink_fini\fR(\fBdi_devlink_handle_t *\fR\fIhdlp\fR);
+.fi
+
+.SH PARAMETERS
+.sp
+.ne 2
+.mk
+.na
+\fB\fIflags\fR\fR
+.ad
+.RS 9n
+.rt
+The following values are supported:
+.sp
+.ne 2
+.mk
+.na
+\fB\fBDI_MAKE_LINK\fR\fR
+.ad
+.RS 16n
+.rt
+Synchronize with devlink management before taking the snapshot. The name
+argument determines which devlink management activities must complete before
+taking a devlink snapshot. Appropriate privileges are required to use this
+flag.
+.RE
+
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIname\fR\fR
+.ad
+.RS 9n
+.rt
+If flags is \fBDI_MAKE_LINK\fR, \fIname\fR determines which devlink management
+activity must complete prior to snapshot.
+.RS +4
+.TP
+.ie t \(bu
+.el o
+If \fIname\fR is \fINULL\fR then all devlink management activities must
+complete. The devlink snapshot returned accurately reflects the entire kernel
+device tree.
+.RE
+.RS +4
+.TP
+.ie t \(bu
+.el o
+If \fIname\fR is a driver name, devlink management activities associated with
+nodes bound to that driver must complete.
+.RE
+.RS +4
+.TP
+.ie t \(bu
+.el o
+If \fIname\fR is a path to a node in the kernel device tree (no
+"\fB/devices\fR" prefix), devlink management activities below node must
+complete.
+.RE
+.RS +4
+.TP
+.ie t \(bu
+.el o
+If \fIname\fR is a path to a minor node in the kernel device tree (no
+"\fB/devices\fR"prefix), devlink management activities on that minor node must
+complete.
+.RE
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIhdlp\fR\fR
+.ad
+.RS 9n
+.rt
+The handle to the snapshot obtained by calling \fBdi_devlink_init()\fR.
+.RE
+
+.SH DESCRIPTION
+.sp
+.LP
+System management applications often need to map a "\fB/devices\fR" path to a
+minor node to a public "\fB/dev\fR" device name. The \fBdi_devlink_*()\fR
+functions provide an efficient way to accomplish this.
+.sp
+.LP
+The \fBdi_devlink_init()\fR function takes a snapshot of devlinks and returns a
+handle to this snapshot.
+.sp
+.LP
+The \fBdi_devlink_fini()\fR function destroys the devlink snapshot and frees
+the associated memory.
+.SH RETURN VALUES
+.sp
+.LP
+Upon successful completion, \fBdi_devlink_init()\fR returns a handle to a
+devlink snapshot. Otherwise, \fBDI_LINK_NIL\fR is returned and \fBerrno\fR is
+set to indicate the error.
+.sp
+.LP
+Upon successful completion, \fBdi_devlink_fini()\fR returns 0. Otherwise, -1 is
+returned and \fBerrno\fR is set to indicate the error.
+.SH ERRORS
+.sp
+.LP
+The \fBdi_devlink_init()\fR function will fail if:
+.sp
+.ne 2
+.mk
+.na
+\fB\fBEINVAL\fR\fR
+.ad
+.RS 10n
+.rt
+One or more arguments is invalid.
+.RE
+
+.sp
+.LP
+The \fBdi_devlink_init()\fR function with \fBDI_MAKE_LINK\fR can also fail if:
+.sp
+.ne 2
+.mk
+.na
+\fB\fBEPERM\fR\fR
+.ad
+.RS 9n
+.rt
+The user does no have appropriate privileges.
+.RE
+
+.sp
+.LP
+The \fBdi_devlink_init()\fR function can set \fBerrno\fR to any error value
+that can also be set by \fBmalloc\fR(3C), \fBopen\fR(2), \fBioctl\fR(2), or
+\fBmmap\fR(2).
+.SH ATTRIBUTES
+.sp
+.LP
+See \fBattributes\fR(5) for descriptions of the following attributes:
+.sp
+
+.sp
+.TS
+tab() box;
+cw(2.75i) |cw(2.75i)
+lw(2.75i) |lw(2.75i)
+.
+ATTRIBUTE TYPEATTRIBUTE VALUE
+_
+Interface StabilityCommitted
+_
+MT-LevelSafe
+.TE
+
+.SH SEE ALSO
+.sp
+.LP
+\fBioctl\fR(2), \fBmmap\fR(2), \fBopen\fR(2), \fBdi_devlink_path\fR(3DEVINFO),
+\fBdi_devlink_walk\fR(3DEVINFO), \fBlibdevinfo\fR(3LIB), \fBmalloc\fR(3C),
+\fBattributes\fR(5)
diff --git a/usr/src/man/man3devinfo/di_devlink_path.3devinfo b/usr/src/man/man3devinfo/di_devlink_path.3devinfo
new file mode 100644
index 0000000000..5ad311d04b
--- /dev/null
+++ b/usr/src/man/man3devinfo/di_devlink_path.3devinfo
@@ -0,0 +1,97 @@
+'\" te
+.\" Copyright (c) 2008, Sun Microsystems, Inc. All Rights Reserved.
+.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
+.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
+.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
+.TH di_devlink_path 3DEVINFO "15 May 2008" "SunOS 5.11" "Device Information Library Functions"
+.SH NAME
+di_devlink_path, di_devlink_content, di_devlink_type \- get devlink attributes
+.SH SYNOPSIS
+.LP
+.nf
+\fBcc\fR [ \fIflag\fR... ] \fIfile\fR... \fB-ldevinfo\fR [ \fIlibrary\fR... ]
+#include <libdevinfo.h>
+
+\fBconst char *\fR\fBdi_devlink_path\fR(\fBdi_devlink_t\fR \fIdevlink\fR);
+.fi
+
+.LP
+.nf
+\fBconst char *\fR\fBdi_devlink_content\fR(\fBdi_devlink_t\fR \fIdevlink\fR);
+.fi
+
+.LP
+.nf
+\fBint\fR \fBdi_devlink_type\fR(\fBdi_devlink_t\fR \fIdevlink\fR);
+.fi
+
+.SH PARAMETERS
+.sp
+.ne 2
+.mk
+.na
+\fB\fIdevlink\fR\fR
+.ad
+.RS 11n
+.rt
+An opaque handle to a devlink.
+.RE
+
+.SH DESCRIPTION
+.sp
+.LP
+These functions return various attributes of a devlink.
+.SH RETURN VALUES
+.sp
+.LP
+The \fBdi_devlink_path()\fR function returns the absolute path of a devlink. On
+error, \fINULL\fR is returned and \fBerrno\fR is set to indicate the error.
+.sp
+.LP
+The \fBdi_devlink_content()\fR function returns the content of the symbolic
+link represented by \fIdevlink\fR. On error, \fINULL\fR is returned and
+\fBerrno\fR is set to indicate the error.
+.sp
+.LP
+The \fBdi_devlink_type()\fR function returns the devlink type, either
+\fBDI_PRIMARY_LINK\fR or \fBDI_SECONDARY_LINK\fR. On error, -1 is returned and
+\fBerrno\fR is set to indicate the error.
+.SH ERRORS
+.sp
+.LP
+These functions will fail if:
+.sp
+.ne 2
+.mk
+.na
+\fB\fBEINVAL\fR\fR
+.ad
+.RS 10n
+.rt
+The \fIdevlink\fR argument is invalid.
+.RE
+
+.SH ATTRIBUTES
+.sp
+.LP
+See \fBattributes\fR(5) for descriptions of the following attributes:
+.sp
+
+.sp
+.TS
+tab() box;
+cw(2.75i) |cw(2.75i)
+lw(2.75i) |lw(2.75i)
+.
+ATTRIBUTE TYPEATTRIBUTE VALUE
+_
+Interface StabilityCommitted
+_
+MT-LevelSafe
+.TE
+
+.SH SEE ALSO
+.sp
+.LP
+\fBdi_devlink_init\fR(3DEVINFO), \fBdi_devlink_walk\fR(3DEVINFO),
+\fBlibdevinfo\fR(3LIB), \fBmalloc\fR(3C), \fBattributes\fR(5)
diff --git a/usr/src/man/man3devinfo/di_devlink_walk.3devinfo b/usr/src/man/man3devinfo/di_devlink_walk.3devinfo
new file mode 100644
index 0000000000..3b990c6d6d
--- /dev/null
+++ b/usr/src/man/man3devinfo/di_devlink_walk.3devinfo
@@ -0,0 +1,182 @@
+'\" te
+.\" Copyright (c) 2008, Sun Microsystems, Inc. All Rights Reserved.
+.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
+.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
+.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
+.TH di_devlink_walk 3DEVINFO "15 May 2008" "SunOS 5.11" "Device Information Library Functions"
+.SH NAME
+di_devlink_walk \- walk through links in a devlink snapshot
+.SH SYNOPSIS
+.LP
+.nf
+\fBcc\fR [ \fIflag\fR... ] \fIfile\fR... \fB-ldevinfo\fR [ \fIlibrary\fR... ]
+#include <libdevinfo.h>
+
+\fBint\fR \fBdi_devlink_walk\fR(\fBdi_devlink_handle_t\fR \fIhdl\fR,\fBconst char *\fR\fIre\fR,
+ \fBconst char *\fR\fImpath\fR, \fBuint_t\fR \fIflags\fR, \fBvoid *\fR\fIarg\fR,
+ \fBint\fR (*\fIdevlink_callback\fR)(\fBdi_devlink_t\fR \fIdevlink\fR, \fBvoid *\fR\fIarg\fR));
+.fi
+
+.SH PARAMETERS
+.sp
+.ne 2
+.mk
+.na
+\fB\fIhdl\fR\fR
+.ad
+.RS 11n
+.rt
+A handle to a snapshot of devlinks in "\fB/dev\fR".
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIre\fR\fR
+.ad
+.RS 11n
+.rt
+An extended regular expression as specified in \fBregex\fR(5) describing the
+paths of devlinks to visit. A null value matches all devlinks. The expression
+should not involve the "\fB/dev\fR" prefix. For example, the "^\fBdsk/\fR" will
+invoke \fIdevlink_callback\fR() for all "\fB/dev/dsk/\fR" links.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fImpath\fR\fR
+.ad
+.RS 11n
+.rt
+A path to a minor node below "\fB/devices\fR" for which "\fB/dev\fR" links are
+to be looked up. A null value selects all devlinks. This path should not have
+a "\fB/devices\fR" prefix.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIflags\fR\fR
+.ad
+.RS 11n
+.rt
+Specify the type of devlinks to be selected. If \fBDI_PRIMARY_LINK\fR is used,
+only primary links (for instance, links which point only to "\fB/devices\fR"
+entries) are selected. If \fBDI_SECONDARY_LINK\fR is specified, only secondary
+links (for instance, devlinks which point to other devlinks) are selected. If
+neither flag is specified, all devlinks are selected.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIarg\fR\fR
+.ad
+.RS 11n
+.rt
+A pointer to caller private data.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIdevlink\fR\fR
+.ad
+.RS 11n
+.rt
+The devlink being visited.
+.RE
+
+.SH DESCRIPTION
+.sp
+.LP
+The \fBdi_devlink_walk()\fR function visits every link in the snapshot that
+meets the criteria specified by the caller. For each such devlink, the
+caller-supplied function \fIdevlink_callback\fR() is invoked. The return value
+of \fIdevlink_callback\fR() determines subsequent walk behavior.
+.SH RETURN VALUES
+.sp
+.LP
+Upon success, the \fBdi_devlink_walk()\fR function returns 0. Otherwise, -1 is
+returned and \fBerrno\fR is set to indicate the error.
+.sp
+.LP
+The \fIdevlink_callback\fR() function can return the following values:
+.sp
+.ne 2
+.mk
+.na
+\fB\fBDI_WALK_CONTINUE\fR\fR
+.ad
+.RS 21n
+.rt
+Continue walking.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBDI_WALK_TERMINATE\fR\fR
+.ad
+.RS 21n
+.rt
+Terminate the walk immediately.
+.RE
+
+.SH ERRORS
+.sp
+.LP
+The \fBdevlink_callback()\fR function will fail if:
+.sp
+.ne 2
+.mk
+.na
+\fB\fBEINVAL\fR\fR
+.ad
+.RS 10n
+.rt
+One or more arguments is invalid.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBENOMEM\fR\fR
+.ad
+.RS 10n
+.rt
+Insufficient memory is available.
+.RE
+
+.SH ATTRIBUTES
+.sp
+.LP
+See \fBattributes\fR(5) for descriptions of the following attributes:
+.sp
+
+.sp
+.TS
+tab() box;
+cw(2.75i) |cw(2.75i)
+lw(2.75i) |lw(2.75i)
+.
+ATTRIBUTE TYPEATTRIBUTE VALUE
+_
+Interface StabilityCommitted
+_
+MT-LevelSafe
+.TE
+
+.SH SEE ALSO
+.sp
+.LP
+\fBdi_devlink_init\fR(3DEVINFO), \fBdi_devlink_path\fR(3DEVINFO),
+\fBlibdevinfo\fR(3LIB), \fBmalloc\fR(3C), \fBattributes\fR(5), \fBregex\fR(5)
diff --git a/usr/src/man/man3devinfo/di_init.3devinfo b/usr/src/man/man3devinfo/di_init.3devinfo
new file mode 100644
index 0000000000..64a2c53f02
--- /dev/null
+++ b/usr/src/man/man3devinfo/di_init.3devinfo
@@ -0,0 +1,320 @@
+'\" te
+.\" Copyright (c) 2008, Sun Microsystems, Inc. All Rights Reserved.
+.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
+.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
+.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
+.TH di_init 3DEVINFO "15 May 2008" "SunOS 5.11" "Device Information Library Functions"
+.SH NAME
+di_init, di_fini \- create and destroy a snapshot of kernel device tree
+.SH SYNOPSIS
+.LP
+.nf
+\fBcc\fR [ \fIflag\fR... ] \fIfile\fR... \fB-ldevinfo\fR [ \fIlibrary\fR... ]
+#include <libdevinfo.h>
+
+\fBdi_node_t\fR \fBdi_init\fR(\fBconst char *\fR\fIphys_path\fR, \fBuint_t\fR \fIflags\fR);
+.fi
+
+.LP
+.nf
+\fBvoid\fR \fBdi_fini\fR(\fBdi_node_t\fR \fIroot\fR);
+.fi
+
+.SH PARAMETERS
+.sp
+.ne 2
+.mk
+.na
+\fB\fIflags\fR\fR
+.ad
+.RS 13n
+.rt
+Snapshot content specification. The possible values can be a bitwise OR of at
+least one of the following:
+.sp
+.ne 2
+.mk
+.na
+\fB\fBDINFOSUBTREE\fR\fR
+.ad
+.RS 16n
+.rt
+Include subtree.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBDINFOPROP\fR\fR
+.ad
+.RS 16n
+.rt
+Include properties.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBDINFOMINOR\fR\fR
+.ad
+.RS 16n
+.rt
+Include minor node data.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBDINFOCPYALL\fR\fR
+.ad
+.RS 16n
+.rt
+Include all of the above.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBDINFOPATH\fR\fR
+.ad
+.RS 16n
+.rt
+Include multipath path node data.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBDINFOLYR\fR\fR
+.ad
+.RS 16n
+.rt
+Include device layering data.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBDINFOCPYONE\fR\fR
+.ad
+.RS 16n
+.rt
+Include only a single node without properties, minor nodes, or path nodes.
+.RE
+
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIphys_path\fR\fR
+.ad
+.RS 13n
+.rt
+Physical path of the \fIroot\fR device node of the snapshot. See
+\fBdi_devfs_path\fR(3DEVINFO).
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIroot\fR\fR
+.ad
+.RS 13n
+.rt
+Handle obtained by calling \fBdi_init()\fR.
+.RE
+
+.SH DESCRIPTION
+.sp
+.LP
+The \fBdi_init()\fR function creates a snapshot of the kernel device tree and
+returns a handle of the \fIroot\fR device node. The caller specifies the
+contents of the snapshot by providing \fIflag\fR and \fIphys_path\fR.
+.sp
+.LP
+The \fBdi_fini()\fR function destroys the snapshot of the kernel device tree
+and frees the associated memory. All handles associated with this snapshot
+become invalid after the call to \fBdi_fini()\fR.
+.SH RETURN VALUES
+.sp
+.LP
+Upon success, \fBdi_init()\fR returns a handle. Otherwise, \fBDI_NODE_NIL\fR is
+returned and \fIerrno\fR is set to indicate the error.
+.SH ERRORS
+.sp
+.LP
+The \fBdi_init()\fR function can set \fIerrno\fR to any error code that can
+also be set by \fBopen\fR(2), \fBioctl\fR(2) or \fBmmap\fR(2). The most common
+error codes include:
+.sp
+.ne 2
+.mk
+.na
+\fB\fBEACCES\fR\fR
+.ad
+.RS 10n
+.rt
+Insufficient privilege for accessing device configuration data.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBENXIO\fR\fR
+.ad
+.RS 10n
+.rt
+Either the device named by \fIphys_path\fR is not present in the system, or the
+\fBdevinfo\fR(7D) driver is not installed properly.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBEINVAL\fR\fR
+.ad
+.RS 10n
+.rt
+Either \fIphys_path\fR is incorrectly formed or the \fIflags\fR argument is
+invalid.
+.RE
+
+.SH EXAMPLES
+.LP
+\fBExample 1 \fRUsing the \fBlibdevinfo\fR Interfaces To Print All Device Tree
+Node Names
+.sp
+.LP
+The following is an example using the \fBlibdevinfo\fR interfaces to print all
+device tree device node names:
+
+.sp
+.in +2
+.nf
+/*
+ * Code to print all device tree device node names
+ */
+
+#include <stdio.h>
+#include <libdevinfo.h>
+
+int
+prt_nodename(di_node_t node, void *arg)
+{
+ printf("%s\en", di_node_name(node));
+ return (DI_WALK_CONTINUE);
+}
+
+main()
+{
+ di_node_t root_node;
+ if((root_node = di_init("/", DINFOSUBTREE)) == DI_NODE_NIL) {
+ fprintf(stderr, "di_init() failed\en");
+ exit(1);
+ }
+ di_walk_node(root_node, DI_WALK_CLDFIRST, NULL, prt_nodename);
+ di_fini(root_node);
+}
+.fi
+.in -2
+
+.LP
+\fBExample 2 \fRUsing the \fBlibdevinfo\fR Interfaces To Print The Physical
+Path Of SCSI Disks
+.sp
+.LP
+The following example uses the \fBlibdevinfo\fR interfaces to print the
+physical path of SCSI disks:
+
+.sp
+.in +2
+.nf
+/*
+ * Code to print physical path of scsi disks
+ */
+
+#include <stdio.h>
+#include <libdevinfo.h>
+#define DISK_DRIVER "sd" /* driver name */
+
+void
+prt_diskinfo(di_node_t node)
+{
+ int instance;
+ char *phys_path;
+
+ /*
+ * If the device node exports no minor nodes,
+ * there is no physical disk.
+ */
+ if (di_minor_next(node, DI_MINOR_NIL) == DI_MINOR_NIL) {
+ return;
+ }
+
+ instance = di_instance(node);
+ phys_path = di_devfs_path(node);
+ printf("%s%d: %s\en", DISK_DRIVER, instance, phys_path);
+ di_devfs_path_free(phys_path);
+}
+
+void
+walk_disknodes(di_node_t node)
+{
+ node = di_drv_first_node(DISK_DRIVER, node);
+ while (node != DI_NODE_NIL) {
+ prt_diskinfo(node);
+ node = di_drv_next_node(node);
+ }
+}
+
+main()
+{
+ di_node_t root_node;
+ if ((root_node = di_init("/", DINFOCPYALL)) == DI_NODE_NIL) {
+ fprintf(stderr, "di_init() failed\en");
+ exit(1);
+ }
+ walk_disknodes(root_node);
+ di_fini(root_node);
+}
+.fi
+.in -2
+
+.SH ATTRIBUTES
+.sp
+.LP
+See \fBattributes\fR(5) for descriptions of the following attributes:
+.sp
+
+.sp
+.TS
+tab() box;
+cw(2.75i) |cw(2.75i)
+lw(2.75i) |lw(2.75i)
+.
+ATTRIBUTE TYPEATTRIBUTE VALUE
+_
+Interface StabilityCommitted
+_
+MT-LevelSafe
+.TE
+
+.SH SEE ALSO
+.sp
+.LP
+\fBopen\fR(2), \fBioctl\fR(2), \fBmmap\fR(2), \fBlibdevinfo\fR(3LIB),
+\fBattributes\fR(5)
+.sp
+.LP
+\fIWriting Device Drivers\fR
diff --git a/usr/src/man/man3devinfo/di_link_next_by_node.3devinfo b/usr/src/man/man3devinfo/di_link_next_by_node.3devinfo
new file mode 100644
index 0000000000..af3b893749
--- /dev/null
+++ b/usr/src/man/man3devinfo/di_link_next_by_node.3devinfo
@@ -0,0 +1,153 @@
+'\" te
+.\" Copyright (c) 2004, Sun Microsystems, Inc. All Rights Reserved.
+.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
+.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
+.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
+.TH di_link_next_by_node 3DEVINFO "12 Jul 2004" "SunOS 5.11" "Device Information Library Functions"
+.SH NAME
+di_link_next_by_node, di_link_next_by_lnode \- libdevinfo link traversal
+functions
+.SH SYNOPSIS
+.LP
+.nf
+cc [ \fIflag\fR\&.\|.\|. ] \fIfile\fR\&.\|.\|. \fB-ldevinfo\fR [ \fIlibrary\fR\&.\|.\|. ]
+#include <libdevinfo.h>
+
+\fBdi_link_t\fR \fBdi_link_next_by_node\fR(\fBdi_lnode_t\fR \fInode\fR, \fBdi_link_t\fR \fIlink\fR,
+ \fBuint_t\fR \fIendpoint\fR);
+.fi
+
+.LP
+.nf
+\fBdi_link_t\fR \fBdi_link_next_by_lnode\fR(\fBdi_node_t\fR \fIlnode\fR, \fBdi_link_t\fR \fIlink\fR,
+ \fBuint_t\fR \fIendpoint\fR);
+.fi
+
+.SH PARAMETERS
+.sp
+.ne 2
+.mk
+.na
+\fB\fIlink\fR\fR
+.ad
+.RS 12n
+.rt
+The handle to the current the link or \fBDI_LINK_NIL\fR.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIendpoint\fR\fR
+.ad
+.RS 12n
+.rt
+Specify which endpoint of the link the node or lnode should correspond to,
+either \fBDI_LINK_TGT\fR or \fBDI_LINK_SRC\fR.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fInode\fR\fR
+.ad
+.RS 12n
+.rt
+The device node with which the link is associated.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIlnode\fR\fR
+.ad
+.RS 12n
+.rt
+The lnode with which the link is associated.
+.RE
+
+.SH DESCRIPTION
+.sp
+.LP
+The \fBdi_link_next_by_node()\fR function returns a handle to the next link
+that has the same endpoint node as \fIlink\fR. If \fIlink\fR is
+\fBDI_LINK_NIL\fR, a handle is returned to the first link whose endpoint
+specified by \fIendpoint\fR matches the node specified by \fInode\fR.
+.sp
+.LP
+The \fBdi_link_next_by_lnode()\fR function returns a handle to the next link
+that has the same endpoint lnode as \fIlink\fR. If \fIlink\fR is
+\fBDI_LINK_NIL\fR, a handle is returned to the first link whose endpoint
+specified by \fIendpoint\fR matches the lnode specified by \fIlnode\fR.
+.SH RETURN VALUES
+.sp
+.LP
+Upon successful completion, a handle to the next link is returned. Otherwise,
+\fBDI_LINK_NIL\fR is returned and \fBerrno\fR is set to indicate the error.
+.SH ERRORS
+.sp
+.LP
+The \fBdi_link_next_by_node()\fR and \fBdi_link_next_by_lnode()\fR functions
+will fail if:
+.sp
+.ne 2
+.mk
+.na
+\fB\fBEINVAL\fR\fR
+.ad
+.RS 10n
+.rt
+An argument is invalid.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBENXIO\fR\fR
+.ad
+.RS 10n
+.rt
+The end of the link list has been reached.
+.RE
+
+.sp
+.LP
+The \fBdi_link_next_by_node()\fR function will fail if:
+.sp
+.ne 2
+.mk
+.na
+\fB\fBENOTSUP\fR\fR
+.ad
+.RS 11n
+.rt
+Device usage information is not available in snapshot.
+.RE
+
+.SH ATTRIBUTES
+.sp
+.LP
+See \fBattributes\fR(5) for descriptions of the following attributes:
+.sp
+
+.sp
+.TS
+tab() box;
+cw(2.75i) |cw(2.75i)
+lw(2.75i) |lw(2.75i)
+.
+ATTRIBUTE TYPEATTRIBUTE VALUE
+_
+Interface StabilityEvolving
+_
+MT-LevelSafe
+.TE
+
+.SH SEE ALSO
+.sp
+.LP
+\fBdi_init\fR(3DEVINFO), \fBlibdevinfo\fR(3LIB), \fBattributes\fR(5)
diff --git a/usr/src/man/man3devinfo/di_link_spectype.3devinfo b/usr/src/man/man3devinfo/di_link_spectype.3devinfo
new file mode 100644
index 0000000000..f594fa2604
--- /dev/null
+++ b/usr/src/man/man3devinfo/di_link_spectype.3devinfo
@@ -0,0 +1,104 @@
+'\" te
+.\" Copyright (c) 2004, Sun Microsystems, Inc. All Rights Reserved.
+.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
+.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
+.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
+.TH di_link_spectype 3DEVINFO "22 Mar 2004" "SunOS 5.11" "Device Information Library Functions"
+.SH NAME
+di_link_spectype, di_link_to_lnode \- return libdevinfo link information
+.SH SYNOPSIS
+.LP
+.nf
+cc [ \fIflag\fR\&.\|.\|. ] \fIfile\fR\&.\|.\|. \fB-ldevinfo\fR [ \fIlibrary\fR\&.\|.\|. ]
+#include <libdevinfo.h>
+
+\fBint\fR \fBdi_link_spectype\fR(\fBdi_link_t\fR \fIlink\fR);
+.fi
+
+.LP
+.nf
+\fBdi_lnode_t\fR \fBdi_link_to_lnode\fR(\fBdi_link_t\fR \fIlink\fR, \fBuint_t\fR \fIendpoint\fR);
+.fi
+
+.SH PARAMETERS
+.sp
+.ne 2
+.mk
+.na
+\fB\fIlink\fR\fR
+.ad
+.RS 12n
+.rt
+A handle to a link.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIendpoint\fR\fR
+.ad
+.RS 12n
+.rt
+specifies the endpoint of the link, which should correspond to either
+\fBDI_LINK_TGT\fR or \fBDI_LINK_SRC\fR
+.RE
+
+.SH DESCRIPTION
+.sp
+.LP
+The \fBdi_link_spectype()\fR function returns libdevinfo link information.
+.sp
+.LP
+The \fBdi_link_to_lnode()\fR function takes a link specified by \fIlink\fR and
+returns the lnode corresponding to the link endpoint specified by
+\fIendpoint\fR.
+.SH RETURN VALUES
+.sp
+.LP
+The \fBdi_link_spectype()\fR function returns the spectype parameter flag that
+was used to open the target device of a link, either \fBS_IFCHR\fR or
+\fBS_IFBLK\fR.
+.sp
+.LP
+Upon successful completion, \fBdi_link_to_lnode()\fR returns a handle to an
+lnode. Otherwise, \fBDI_LINK_NIL\fR is returned and \fBerrno\fR is set to
+indicate the error.
+.SH ERRORS
+.sp
+.LP
+The \fBdi_link_to_lnode()\fR function will fail if:
+.sp
+.ne 2
+.mk
+.na
+\fB\fBEINVAL\fR\fR
+.ad
+.RS 10n
+.rt
+An argument is invalid.
+.RE
+
+.SH ATTRIBUTES
+.sp
+.LP
+See \fBattributes\fR(5) for descriptions of the following attributes:
+.sp
+
+.sp
+.TS
+tab() box;
+cw(2.75i) |cw(2.75i)
+lw(2.75i) |lw(2.75i)
+.
+ATTRIBUTE TYPEATTRIBUTE VALUE
+_
+Interface StabilityEvolving
+_
+MT-LevelSafe
+.TE
+
+.SH SEE ALSO
+.sp
+.LP
+\fBdi_init\fR(3DEVINFO), \fBlibdevinfo\fR(3LIB), \fBattributes\fR(5)
diff --git a/usr/src/man/man3devinfo/di_lnode_name.3devinfo b/usr/src/man/man3devinfo/di_lnode_name.3devinfo
new file mode 100644
index 0000000000..41b95ef0c6
--- /dev/null
+++ b/usr/src/man/man3devinfo/di_lnode_name.3devinfo
@@ -0,0 +1,119 @@
+'\" te
+.\" Copyright (c) 2004, Sun Microsystems, Inc. All Rights Reserved.
+.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
+.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
+.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
+.TH di_lnode_name 3DEVINFO "22 Mar 2004" "SunOS 5.11" "Device Information Library Functions"
+.SH NAME
+di_lnode_name, di_lnode_devinfo, di_lnode_devt \- return libdevinfo lnode
+information
+.SH SYNOPSIS
+.LP
+.nf
+cc [ \fIflag\fR\&.\|.\|. ] \fIfile\fR\&.\|.\|. \fB-ldevinfo\fR [ \fIlibrary\fR\&.\|.\|. ]
+#include <libdevinfo.h>
+
+\fBchar *\fR\fBdi_lnode_name\fR(\fBdi_lnode_t\fR \fIlnode\fR);
+.fi
+
+.LP
+.nf
+\fBdi_node_t\fR \fBdi_lnode_devinfo\fR(\fBdi_lnode_t\fR \fIlnode\fR);
+.fi
+
+.LP
+.nf
+\fBint\fR \fBdi_lnode_devt\fR(\fBdi_lnode_t\fR \fIlnode\fR, \fBdev_t *\fR\fIdevt\fR);
+.fi
+
+.SH PARAMETERS
+.sp
+.ne 2
+.mk
+.na
+\fB\fIlnode\fR\fR
+.ad
+.RS 9n
+.rt
+A handle to an lnode.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIdevt\fR\fR
+.ad
+.RS 9n
+.rt
+A pointer to a \fBdev_t\fR that can be returned.
+.RE
+
+.SH DESCRIPTION
+.sp
+.LP
+These functions return \fBlibdevinfo\fR lnode information.
+.sp
+.LP
+The \fBdi_lnode_name()\fR function returns a pointer to the name associated
+with \fIlnode\fR.
+.sp
+.LP
+The \fBdi_lnode_devinfo()\fR function returns a handle to the device node
+associated with \fIlnode\fR.
+.sp
+.LP
+The \fBdi_lnode_devt()\fR function sets the \fBdev_t\fR pointed to by the
+\fIdevt\fR parameter to the \fBdev_t\fR associated with \fIlnode\fR.
+.SH RETURN VALUES
+.sp
+.LP
+The \fBdi_lnode_name()\fR function returns a pointer to the name associated
+with \fIlnode\fR.
+.sp
+.LP
+The \fBdi_lnode_devinfo()\fR function returns a handle to the device node
+associated with \fIlnode\fR.
+.sp
+.LP
+The \fBdi_lnode_devt()\fR function returns 0 if the requested attribute exists
+in \fIlnode\fR and was returned. It returns \(mi1 if the requested attribute
+does not exist and sets \fBerrno\fR to indicate the error.
+.SH ERRORS
+.sp
+.LP
+The \fBdi_lnode_devt()\fR function will fail if:
+.sp
+.ne 2
+.mk
+.na
+\fB\fBEINVAL\fR\fR
+.ad
+.RS 10n
+.rt
+An argument was invalid.
+.RE
+
+.SH ATTRIBUTES
+.sp
+.LP
+See \fBattributes\fR(5) for descriptions of the following attributes:
+.sp
+
+.sp
+.TS
+tab() box;
+cw(2.75i) |cw(2.75i)
+lw(2.75i) |lw(2.75i)
+.
+ATTRIBUTE TYPEATTRIBUTE VALUE
+_
+Interface StabilityEvolving
+_
+MT-LevelSafe
+.TE
+
+.SH SEE ALSO
+.sp
+.LP
+\fBdi_init\fR(3DEVINFO), \fBlibdevinfo\fR(3LIB), \fBattributes\fR(5)
diff --git a/usr/src/man/man3devinfo/di_lnode_next.3devinfo b/usr/src/man/man3devinfo/di_lnode_next.3devinfo
new file mode 100644
index 0000000000..794d533cb6
--- /dev/null
+++ b/usr/src/man/man3devinfo/di_lnode_next.3devinfo
@@ -0,0 +1,111 @@
+'\" te
+.\" Copyright (c) 2004, Sun Microsystems, Inc. All Rights Reserved.
+.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
+.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
+.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
+.TH di_lnode_next 3DEVINFO "22 Mar 2004" "SunOS 5.11" "Device Information Library Functions"
+.SH NAME
+di_lnode_next \- libdevinfo lnode traversal function
+.SH SYNOPSIS
+.LP
+.nf
+cc [ \fIflag\fR\&.\|.\|. ] \fIfile\fR\&.\|.\|. \fB-ldevinfo\fR [ \fIlibrary\fR\&.\|.\|. ]
+#include <libdevinfo.h>
+
+\fBdi_lnode_t\fR \fBdi_lnode_next\fR(\fBdi_node_t\fR \fInode\fR, \fBdi_lnode_t\fR \fIlnode\fR);
+.fi
+
+.SH PARAMETERS
+.sp
+.ne 2
+.mk
+.na
+\fB\fInode\fR\fR
+.ad
+.RS 9n
+.rt
+A handle to a di_node.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIlnode\fR\fR
+.ad
+.RS 9n
+.rt
+A handle to an lnode.
+.RE
+
+.SH DESCRIPTION
+.sp
+.LP
+The \fBdi_lnode_next()\fR function returns a handle to the next lnode for the
+device node specified by \fInode\fR. If \fIlnode\fR is \fBDI_LNODE_NIL\fR, a
+handle to the first lnode is returned.
+.SH RETURN VALUES
+.sp
+.LP
+Upon successful completion, a handle to an lnode is returned. Otherwise,
+\fBDI_LNODE_NIL\fR is returned and \fBerrno\fR is set to indicate the error.
+.SH ERRORS
+.sp
+.LP
+The \fBdi_lnode_next()\fR function will fail if:
+.sp
+.ne 2
+.mk
+.na
+\fB\fBEINVAL\fR\fR
+.ad
+.RS 11n
+.rt
+An argument is invalid.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBENOTSUP\fR\fR
+.ad
+.RS 11n
+.rt
+Device usage information is not available in snapshot.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBENXIO\fR\fR
+.ad
+.RS 11n
+.rt
+The end of the lnode list has been reached.
+.RE
+
+.SH ATTRIBUTES
+.sp
+.LP
+See \fBattributes\fR(5) for descriptions of the following attributes:
+.sp
+
+.sp
+.TS
+tab() box;
+cw(2.75i) |cw(2.75i)
+lw(2.75i) |lw(2.75i)
+.
+ATTRIBUTE TYPEATTRIBUTE VALUE
+_
+Interface StabilityEvolving
+_
+MT-LevelSafe
+.TE
+
+.SH SEE ALSO
+.sp
+.LP
+\fBdi_init\fR(3DEVINFO), \fBlibdevinfo\fR(3LIB), \fBattributes\fR(5)
diff --git a/usr/src/man/man3devinfo/di_minor_devt.3devinfo b/usr/src/man/man3devinfo/di_minor_devt.3devinfo
new file mode 100644
index 0000000000..43d716c3d8
--- /dev/null
+++ b/usr/src/man/man3devinfo/di_minor_devt.3devinfo
@@ -0,0 +1,100 @@
+'\" te
+.\" Copyright (c) 1998, Sun Microsystems, Inc. All Rights Reserved
+.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
+.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
+.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
+.TH di_minor_devt 3DEVINFO "1 Dec 1998" "SunOS 5.11" "Device Information Library Functions"
+.SH NAME
+di_minor_devt, di_minor_name, di_minor_nodetype, di_minor_spectype \- return
+libdevinfo minor node information
+.SH SYNOPSIS
+.LP
+.nf
+\fBcc\fR [ \fIflag\fR... ] \fIfile\fR... \fB-ldevinfo\fR [ \fIlibrary\fR... ]
+#include <libdevinfo.h>
+
+\fBdev_t\fR \fBdi_minor_devt\fR(\fBdi_minor_t\fR \fIminor\fR);
+.fi
+
+.LP
+.nf
+\fBchar *\fR\fBdi_minor_name\fR(\fBdi_minor_t\fR \fIminor\fR);
+.fi
+
+.LP
+.nf
+\fBchar *\fR\fBdi_minor_nodetype\fR(\fBdi_minor_t\fR \fIminor\fR);
+.fi
+
+.LP
+.nf
+\fBint\fR \fBdi_minor_spectype\fR(\fBdi_minor_t\fR \fIminor\fR);
+.fi
+
+.SH PARAMETERS
+.sp
+.ne 2
+.mk
+.na
+\fB\fIminor\fR\fR
+.ad
+.RS 9n
+.rt
+A handle to minor data node.
+.RE
+
+.SH DESCRIPTION
+.sp
+.LP
+ These functions return \fBlibdevinfo\fR minor node information.
+.SH RETURN VALUES
+.sp
+.LP
+The \fBdi_minor_name()\fR function returns the minor \fIname\fR. See
+\fBddi_create_minor_node\fR(9F) for a description of the \fIname\fR parameter.
+.sp
+.LP
+The \fBdi_minor_devt()\fR function returns the \fBdev_t\fR value of the minor
+node that is specified by SYS V ABI. See \fBgetmajor\fR(9F),
+\fBgetminor\fR(9F), and \fBddi_create_minor_node\fR(9F) for more information.
+.sp
+.LP
+The \fBdi_minor_spectype()\fR function returns the \fIspec_type\fR of the file,
+either \fBS_IFCHR\fR or \fBS_IFBLK\fR. See \fBddi_create_minor_node\fR(9F) for
+a description of the \fIspec_type\fR parameter.
+.sp
+.LP
+The \fBdi_minor_nodetype()\fRfunction returns the minor \fInode_type\fR of the
+minor node. See \fBddi_create_minor_node\fR(9F) for a description of the
+\fInode_type\fR parameter.
+.SH ERRORS
+.sp
+.LP
+No errors are defined.
+.SH ATTRIBUTES
+.sp
+.LP
+See \fBattributes\fR(5) for descriptions of the following attributes:
+.sp
+
+.sp
+.TS
+tab() box;
+cw(2.75i) |cw(2.75i)
+lw(2.75i) |lw(2.75i)
+.
+ATTRIBUTE TYPEATTRIBUTE VALUE
+_
+Interface StabilityEvolving
+_
+MT-LevelSafe
+.TE
+
+.SH SEE ALSO
+.sp
+.LP
+\fBattributes\fR(5), \fBddi_create_minor_node\fR(9F), \fBgetmajor\fR(9F),
+\fBgetminor\fR(9F)
+.sp
+.LP
+\fIWriting Device Drivers\fR
diff --git a/usr/src/man/man3devinfo/di_minor_next.3devinfo b/usr/src/man/man3devinfo/di_minor_next.3devinfo
new file mode 100644
index 0000000000..979692e9ed
--- /dev/null
+++ b/usr/src/man/man3devinfo/di_minor_next.3devinfo
@@ -0,0 +1,115 @@
+'\" te
+.\" Copyright (c) 1998, Sun Microsystems, Inc. All Rights Reserved
+.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
+.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
+.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
+.TH di_minor_next 3DEVINFO "1 Dec 1998" "SunOS 5.11" "Device Information Library Functions"
+.SH NAME
+di_minor_next \- libdevinfo minor node traversal functions
+.SH SYNOPSIS
+.LP
+.nf
+\fBcc\fR [ \fIflag\fR... ] \fIfile\fR... \fB-ldevinfo\fR [ \fIlibrary\fR... ]
+#include <libdevinfo.h>
+
+\fBdi_minor_t\fR \fBdi_minor_next\fR(\fBdi_node_t\fR \fInode\fR, \fBdi_minor_t\fR \fIminor\fR);
+.fi
+
+.SH PARAMETERS
+.sp
+.ne 2
+.mk
+.na
+\fB\fIminor\fR\fR
+.ad
+.RS 9n
+.rt
+Handle to the current minor node or \fBDI_MINOR_NIL\fR.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fInode\fR\fR
+.ad
+.RS 9n
+.rt
+Device node with which the minor node is associated.
+.RE
+
+.SH DESCRIPTION
+.sp
+.LP
+The \fBdi_minor_next()\fR function returns a handle to the next minor node for
+the device node \fInode\fR. If \fIminor\fR is \fBDI_MINOR_NIL\fR, a handle to
+the first minor node is returned.
+.SH RETURN VALUES
+.sp
+.LP
+Upon successful completion, a handle to the next minor node is returned.
+Otherwise, \fBDI_MINOR_NIL\fR is returned and \fIerrno\fR is set to indicate
+the error.
+.SH ERRORS
+.sp
+.LP
+The \fBdi_minor_next()\fR function will fail if:
+.sp
+.ne 2
+.mk
+.na
+\fB\fBEINVAL\fR\fR
+.ad
+.RS 11n
+.rt
+Invalid argument.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBENOTSUP\fR\fR
+.ad
+.RS 11n
+.rt
+Minor node information is not available in snapshot.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBENXIO\fR\fR
+.ad
+.RS 11n
+.rt
+End of minor node list.
+.RE
+
+.SH ATTRIBUTES
+.sp
+.LP
+See \fBattributes\fR(5) for descriptions of the following attributes:
+.sp
+
+.sp
+.TS
+tab() box;
+cw(2.75i) |cw(2.75i)
+lw(2.75i) |lw(2.75i)
+.
+ATTRIBUTE TYPEATTRIBUTE VALUE
+_
+Interface StabilityEvolving
+_
+MT-LevelSafe
+.TE
+
+.SH SEE ALSO
+.sp
+.LP
+\fBlibdevinfo\fR(3LIB), \fBattributes\fR(5)
+.sp
+.LP
+\fIWriting Device Drivers\fR
diff --git a/usr/src/man/man3devinfo/di_node_private_set.3devinfo b/usr/src/man/man3devinfo/di_node_private_set.3devinfo
new file mode 100644
index 0000000000..65ec96d8c9
--- /dev/null
+++ b/usr/src/man/man3devinfo/di_node_private_set.3devinfo
@@ -0,0 +1,228 @@
+'\" te
+.\" Copyright (c) 2008, Sun Microsystems, Inc. All Rights Reserved.
+.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
+.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
+.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
+.TH di_node_private_set 3DEVINFO "15 May 2008" "SunOS 5.11" "Device Information Library Functions"
+.SH NAME
+di_node_private_set, di_node_private_get, di_path_private_set,
+di_path_private_get, di_minor_private_set, di_minor_private_get,
+di_link_private_set, di_link_private_get, di_lnode_private_set,
+di_lnode_private_get \- manipulate libdevinfo user traversal pointers
+.SH SYNOPSIS
+.LP
+.nf
+cc [ \fIflag\fR\&.\|.\|. ] \fIfile\fR\&.\|.\|. \fB-ldevinfo\fR [ \fIlibrary\fR\&.\|.\|. ]
+#include <libdevinfo.h>
+
+\fBvoid\fR \fBdi_node_private_set\fR(\fBdi_node_t\fR \fInode\fR, \fBvoid *\fR\fIdata\fR);
+.fi
+
+.LP
+.nf
+\fBvoid *\fR\fBdi_node_private_get\fR(\fBdi_node_t\fR \fInode\fR);
+.fi
+
+.LP
+.nf
+\fBvoid\fR \fBdi_path_private_set\fR(\fBdi_path_t\fR \fIpath\fR, \fBvoid *\fR\fIdata\fR);
+.fi
+
+.LP
+.nf
+\fBvoid *\fR\fBdi_path_private_get\fR(\fBdi_path_t\fR \fIpath\fR);
+.fi
+
+.LP
+.nf
+\fBvoid\fR \fBdi_minor_private_set\fR(\fBdi_minor_t\fR \fIminor\fR, \fBvoid *\fR\fIdata\fR);
+.fi
+
+.LP
+.nf
+\fBvoid *\fR\fBdi_minor_private_get\fR(\fBdi_minor_t\fR \fIminor\fR);
+.fi
+
+.LP
+.nf
+\fBvoid\fR \fBdi_link_private_set\fR(\fBdi_link_t\fR \fIlink\fR, \fBvoid *\fR\fIdata\fR);
+.fi
+
+.LP
+.nf
+\fBvoid *\fR\fBdi_link_private_get\fR(\fBdi_link_t\fR \fIlink\fR);
+.fi
+
+.LP
+.nf
+\fBvoid\fR \fBdi_lnode_private_set\fR(\fBdi_lnode_t\fR \fIlnode\fR, \fBvoid *\fR\fIdata\fR);
+.fi
+
+.LP
+.nf
+\fBvoid *\fR\fBdi_lnode_private_get\fR(\fBdi_lnode_t\fR \fIlnode\fR);
+.fi
+
+.SH PARAMETERS
+.sp
+.ne 2
+.mk
+.na
+\fB\fInode\fR\fR
+.ad
+.RS 9n
+.rt
+The handle to a devinfo node in a \fBdi_init\fR(3DEVINFO) snapshot.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIpath\fR\fR
+.ad
+.RS 9n
+.rt
+The handle to a path node in a snapshot.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIminor\fR\fR
+.ad
+.RS 9n
+.rt
+The handle to a minor node in a snapshot.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIlink\fR\fR
+.ad
+.RS 9n
+.rt
+The handle to a link in a snapshot.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIlnode\fR\fR
+.ad
+.RS 9n
+.rt
+The handle to an lnode in a snapshot.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIdata\fR\fR
+.ad
+.RS 9n
+.rt
+A pointer to caller-specific data.
+.RE
+
+.SH DESCRIPTION
+.sp
+.LP
+The \fBdi_node_private_set()\fR function allows a caller to associate
+caller-specific data pointed to by \fIdata\fR with a devinfo node, thereby
+facilitating traversal of devinfo nodes in the snapshot.
+.sp
+.LP
+The \fBdi_node_private_get()\fR function allows a caller to retrieve a data
+pointer that was associated with a devinfo node obtained by a call to
+\fBdi_node_private_set()\fR.
+.sp
+.LP
+The \fBdi_path_private_set()\fR function allows a caller to associate
+caller-specific data pointed to by \fIdata\fR with a devinfo path node, thereby
+facilitating traversal of path nodes in the snapshot.
+.sp
+.LP
+The \fBdi_path_private_get()\fRfunction allows a caller to retrieve a data
+pointer that was associated with a path node obtained by a call to
+\fBdi_path_private_set()\fR.
+.sp
+.LP
+The \fBdi_minor_private_set()\fR function allows a caller to associate
+caller-specific data pointed to by \fIdata\fR with a minor node specified by
+\fIminor\fR, thereby facilitating traversal of minor nodes in the snapshot.
+.sp
+.LP
+The \fBdi_minor_private_get()\fR function allows a caller to retrieve a data
+pointer that was associated with a minor node obtained by a call to
+\fBdi_minor_private_set()\fR.
+.sp
+.LP
+The \fBdi_link_private_set()\fR function allows a caller to associate
+caller-specific data pointed to by \fIdata\fR with a link, thereby facilitating
+traversal of links in the snapshot.
+.sp
+.LP
+The \fBdi_link_private_get()\fR function allows a caller to retrieve a data
+pointer that was associated with a link obtained by a call to
+\fBdi_link_private_set()\fR.
+.sp
+.LP
+The \fBdi_lnode_private_set()\fR function allows a caller to associate
+caller-specific data pointed to by \fIdata\fR with an lnode specified by
+\fIlnode\fR, thereby facilitating traversal of lnodes in the snapshot.
+.sp
+.LP
+The \fBdi_lnode_private_get()\fR function allows a caller to retrieve a data
+pointer that was associated with an lnode by a call to
+\fBdi_lnode_private_set()\fR.
+.sp
+.LP
+These functions do not perform any type of locking. It is up to the caller to
+satisfy any locking needs.
+.SH RETURN VALUES
+.sp
+.LP
+The \fBdi_node_private_set()\fR, \fBdi_path_private_set()\fR,
+\fBdi_minor_private_set()\fR, \fBdi_link_private_set()\fR, and
+\fBdi_lnode_private_set()\fR functions do not return values.
+.sp
+.LP
+The \fBdi_node_private_get()\fR, \fBdi_path_private_get()\fR,
+\fBdi_minor_private_get()\fR, \fBdi_link_private_get()\fR, and
+\fBdi_lnode_private_get()\fR functions return a pointer to caller-specific data
+that was initialized with their corresponding \fB*_set()\fR function. If no
+caller-specific data was assigned with a \fB*_set()\fR function, the results
+are undefined.
+.SH ERRORS
+.sp
+.LP
+No errors are defined.
+.SH ATTRIBUTES
+.sp
+.LP
+See \fBattributes\fR(5) for descriptions of the following attributes:
+.sp
+
+.sp
+.TS
+tab() box;
+cw(2.75i) |cw(2.75i)
+lw(2.75i) |lw(2.75i)
+.
+ATTRIBUTE TYPEATTRIBUTE VALUE
+_
+Interface StabilityCommitted
+_
+MT-LevelSafe
+.TE
+
+.SH SEE ALSO
+.sp
+.LP
+\fBdi_init\fR(3DEVINFO), \fBlibdevinfo\fR(3LIB), \fBattributes\fR(5)
diff --git a/usr/src/man/man3devinfo/di_path_bus_addr.3devinfo b/usr/src/man/man3devinfo/di_path_bus_addr.3devinfo
new file mode 100644
index 0000000000..111b10fed6
--- /dev/null
+++ b/usr/src/man/man3devinfo/di_path_bus_addr.3devinfo
@@ -0,0 +1,171 @@
+'\" te
+.\" Copyright (c) 2008, Sun Microsystems, Inc. All Rights Reserved.
+.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
+.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
+.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
+.TH di_path_bus_addr 3DEVINFO "15 May 2008" "SunOS 5.11" "Device Information Library Functions"
+.SH NAME
+di_path_bus_addr, di_path_client_node, di_path_instance, di_path_node_name,
+di_path_phci_node, di_path_state \- return libdevinfo path node information
+.SH SYNOPSIS
+.LP
+.nf
+\fBcc\fR [ \fIflag\fR... ] \fIfile\fR... \fB-ldevinfo\fR [ \fIlibrary\fR... ]
+#include <libdevinfo.h>
+
+\fBchar *\fR\fBdi_path_bus_addr\fR(\fBdi_path_t\fR \fIpath\fR);
+.fi
+
+.LP
+.nf
+\fBdi_node_t\fR \fBdi_path_client_node\fR(\fBdi_path_t\fR \fIpath\fR);
+.fi
+
+.LP
+.nf
+\fBint\fR \fBdi_path_instance\fR(\fBdi_path_t\fR \fIpath\fR);
+.fi
+
+.LP
+.nf
+\fBchar *\fR\fBdi_path_node_name\fR(\fBdi_path_t\fR \fIpath\fR);
+.fi
+
+.LP
+.nf
+\fBdi_node_t\fR \fBdi_path_phci_node\fR(\fBdi_path_t\fR \fIpath\fR);
+.fi
+
+.LP
+.nf
+\fBdi_path_state_t\fR \fBdi_path_state\fR(\fBdi_path_t\fR \fIpath\fR);
+.fi
+
+.SH PARAMETERS
+.sp
+.ne 2
+.mk
+.na
+\fB\fIpath\fR\fR
+.ad
+.RS 8n
+.rt
+The handle to a path node in a \fBdi_init\fR(3DEVINFO) snapshot.
+.RE
+
+.SH DESCRIPTION
+.sp
+.LP
+These functions extract information associated with a path node.
+.SH RETURN VALUES
+.sp
+.LP
+The \fBdi_path_bus_addr()\fR function returns a string representing the pHCI
+child path node's unit-address. This function is the \fBdi_path_t\fR peer of
+\fBdi_bus_addr\fR(3DEVINFO).
+.sp
+.LP
+The \fBdi_path_client_node()\fR function returns the \fBdi_node_t\fR of
+the 'client' device node associated with the given path node. If the client device
+node is not present in the current device tree snapshot, \fBDI_NODE_NIL\fR is
+returned and \fBerrno\fR is set to \fBENOTSUP\fR.
+.sp
+.LP
+The \fBdi_path_node_name()\fR function returns a pointer to a null-terminated
+string containing the path node name. This function is the \fBdi_path_t\fR peer
+of \fBdi_node_name\fR(3DEVINFO).
+.sp
+.LP
+The \fBdi_path_instance()\fR function returns the instance number associated
+with the given path node. A path node instance is persistent across
+\fBattach\fR(9E)/\fBdetach\fR(9E)and device reconfigurations, but not across
+reboot. A path node instance is unrelated to a device node
+\fBdi_instance\fR(3DEVINFO).
+.sp
+.LP
+The \fBdi_path_phci_node()\fR function returns the \fBdi_node_t\fR of the pHCI
+host adapter associated with the given path node. If the pHCI device node is
+not present in the current device tree snapshot, \fBDI_NODE_NIL\fR is returned
+and \fBerrno\fR is set to \fBENOTSUP\fR.
+.sp
+.LP
+The \fBdi_path_state()\fR function returns the state of an I/O path. This
+function may return one of the following values:
+.sp
+.ne 2
+.mk
+.na
+\fB\fBDI_PATH_STATE_ONLINE\fR\fR
+.ad
+.sp .6
+.RS 4n
+Identifies that the \fBpath_info\fR node is online and I/O requests can be
+routed through this path.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBDI_PATH_STATE_OFFLINE\fR\fR
+.ad
+.sp .6
+.RS 4n
+Identifies that the \fBpath_info\fR node is in offline state.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBDI_PATH_STATE_FAULT\fR\fR
+.ad
+.sp .6
+.RS 4n
+Identifies that the \fBpath_info\fR node is in faulted state and not ready for
+I/O operations.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBDI_PATH_STATE_STANDBY\fR\fR
+.ad
+.sp .6
+.RS 4n
+Identifies that the \fBpath_info\fR node is in standby state and not ready for
+I/O operations.
+.RE
+
+.SH ATTRIBUTES
+.sp
+.LP
+See \fBattributes\fR(5) for descriptions of the following attributes:
+.sp
+
+.sp
+.TS
+tab() box;
+cw(2.75i) |cw(2.75i)
+lw(2.75i) |lw(2.75i)
+.
+ATTRIBUTE TYPEATTRIBUTE VALUE
+_
+Interface StabilityCommitted
+_
+MT-LevelSafe
+.TE
+
+.SH SEE ALSO
+.sp
+.LP
+\fBdi_bus_addr\fR(3DEVINFO), \fBdi_devfs_path\fR(3DEVINFO),
+\fBdi_init\fR(3DEVINFO), \fBdi_instance\fR(3DEVINFO),
+\fBdi_node_name\fR(3DEVINFO), \fBdi_path_client_next_path\fR(3DEVINFO),
+\fBdi_path_prop_next\fR(3DEVINFO), \fBdi_path_prop_bytes\fR(3DEVINFO),
+\fBdi_path_prop_lookup_bytes\fR(3DEVINFO), \fBdi_path_prop_next\fR(3DEVINFO),
+\fBlibdevinfo\fR(3LIB), \fBattributes\fR(5)
+.sp
+.LP
+\fIWriting Device Drivers\fR
diff --git a/usr/src/man/man3devinfo/di_path_client_next_path.3devinfo b/usr/src/man/man3devinfo/di_path_client_next_path.3devinfo
new file mode 100644
index 0000000000..93b8616c82
--- /dev/null
+++ b/usr/src/man/man3devinfo/di_path_client_next_path.3devinfo
@@ -0,0 +1,151 @@
+'\" te
+.\" Copyright (c) 2008, Sun Microsystems, Inc. All Rights Reserved.
+.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
+.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
+.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
+.TH di_path_client_next_path 3DEVINFO "15 May 2008" "SunOS 5.11" "Device Information Library Functions"
+.SH NAME
+di_path_client_next_path, di_path_phci_next_path \- libdevinfo path node
+traversal functions
+.SH SYNOPSIS
+.LP
+.nf
+\fBcc\fR [ \fIflag\fR... ] \fIfile\fR... \fB-ldevinfo\fR [ \fIlibrary\fR... ]
+#include <libdevinfo.h>
+
+\fBdi_path_t\fR \fBdi_path_client_next_path\fR(\fBdi_node_t node\fR \fInode\fR,
+ \fBdi_path_t\fR \fIpath\fR);
+.fi
+
+.LP
+.nf
+\fBdi_path_t\fR \fBdi_path_phci_next_path\fR(\fBdi_node_t node\fR \fInode\fR,
+ \fBdi_path_t\fR \fIpath\fR);
+.fi
+
+.SH PARAMETERS
+.sp
+.ne 2
+.mk
+.na
+\fB\fInode\fR\fR
+.ad
+.RS 8n
+.rt
+The handle to a device node in a \fBdi_init\fR(3DEVINFO) snapshot. For
+\fBdi_path_client_next_path()\fR, \fInode\fR must be a client device node. For
+\fBdi_path_phci_next_path()\fR, \fInode\fR must be a pHCI device node.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIpath\fR\fR
+.ad
+.RS 8n
+.rt
+\fBDI_PATH_NIL\fR, or the handle to a path node in a snapshot.
+.RE
+
+.SH DESCRIPTION
+.sp
+.LP
+Each path node is an element in a pHCI-client matrix. The matrix is implemented
+by dual linked lists: one list links path nodes related to a common client
+head, and the other links path nodes related to a common pHCI head.
+.sp
+.LP
+The \fBdi_path_client_next_path()\fR function is called on a
+multipathing 'client' device node, where a 'client' is the child of a vHCI device node, and
+is associated with a specific endpoint device identity (independent of physical
+paths). If the path argument is \fINULL\fR, \fBdi_path_client_next_path()\fR
+returns the first path node associated with the client. To walk all path nodes
+associated with a client, returned \fBdi_path_t\fR values are fed back into
+\fBdi_path_client_next_path()\fR, via the \fIpath\fR argument, until a null
+path node is returned. For each path node, \fBdi_path_bus_addr\fR(3DEVINFO)
+returns the pHCI child path node unit-address.
+.sp
+.LP
+The \fBdi_path_phci_next_path()\fR function is called on a multipathing pHCI
+device node. If the path argument is \fINULL\fR, \fBdi_path_phci_next_path()\fR
+returns the first path node associated with the pHCI. To walk all path nodes
+associated with a pHCI, returned \fBdi_path_t\fR values are fed back into
+\fBdi_path_phci_next_path()\fR, via the \fIpath\fR argument, until a null path
+node is returned. For each path node, \fBdi_path_client_node\fR(3DEVINFO)
+provides a pointer to the associated client device node.
+.sp
+.LP
+A device node can be a client device node of one multipathing class and a pHCI
+device node of another class.
+.SH RETURN VALUES
+.sp
+.LP
+Upon successful completion, a handle to the next path node is returned.
+Otherwise, \fBDI_PATH_NIL\fR is returned and \fBerrno\fR is set to indicate the
+error.
+.SH ERRORS
+.sp
+.LP
+These functions will fail if:
+.sp
+.ne 2
+.mk
+.na
+\fB\fBEINVAL\fR\fR
+.ad
+.RS 11n
+.rt
+One or more argument was invalid.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBENOTSUP\fR\fR
+.ad
+.RS 11n
+.rt
+Path node information is not available in the snapshot.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBENXIO\fR\fR
+.ad
+.RS 11n
+.rt
+The end of the path node list was reached.
+.RE
+
+.SH ATTRIBUTES
+.sp
+.LP
+See \fBattributes\fR(5) for descriptions of the following attributes:
+.sp
+
+.sp
+.TS
+tab() box;
+cw(2.75i) |cw(2.75i)
+lw(2.75i) |lw(2.75i)
+.
+ATTRIBUTE TYPEATTRIBUTE VALUE
+_
+Interface StabilityCommitted
+_
+MT-LevelSafe
+.TE
+
+.SH SEE ALSO
+.sp
+.LP
+\fBdi_init\fR(3DEVINFO), \fBdi_path_bus_addr\fR(3DEVINFO),
+\fBdi_path_client_node\fR(3DEVINFO), \fBlibdevinfo\fR(3LIB),
+\fBattributes\fR(5)
+.sp
+.LP
+\fIWriting Device Drivers\fR
diff --git a/usr/src/man/man3devinfo/di_path_prop_bytes.3devinfo b/usr/src/man/man3devinfo/di_path_prop_bytes.3devinfo
new file mode 100644
index 0000000000..beaf5e1338
--- /dev/null
+++ b/usr/src/man/man3devinfo/di_path_prop_bytes.3devinfo
@@ -0,0 +1,247 @@
+'\" te
+.\" Copyright (c) 2008, Sun Microsystems, Inc. All Rights Reserved.
+.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
+.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
+.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
+.TH di_path_prop_bytes 3DEVINFO "15 May 2008" "SunOS 5.11" "Device Information Library Functions"
+.SH NAME
+di_path_prop_bytes, di_path_prop_ints, di_path_prop_int64s, di_path_prop_name,
+di_path_prop_strings, di_path_prop_type \- access path property information
+.SH SYNOPSIS
+.LP
+.nf
+\fBcc\fR [ \fIflag\fR... ] \fIfile\fR... \fB-ldevinfo\fR [ \fIlibrary\fR... ]
+#include <libdevinfo.h>
+
+\fBchar *\fR\fBdi_path_prop_bytes\fR(\fBdi_path_prop_t\fR \fIprop\fR);
+.fi
+
+.LP
+.nf
+\fBint\fR \fB\fR(\fBdi_path_prop_t\fR \fIprop\fR);
+.fi
+
+.LP
+.nf
+\fBint\fR \fB\fR(\fBdi_path_prop_t\fR \fIprop\fR, \fBuchar_t **\fR\fIprop_data\fR);
+.fi
+
+.LP
+.nf
+\fBint\fR \fB\fR(\fBdi_path_prop_t\fR \fIprop\fR, \fBint **\fR\fIprop_data\fR);
+.fi
+
+.LP
+.nf
+\fBint\fR \fB\fR(\fBdi_path_prop_t\fR \fIprop\fR, \fBint64_t **\fR\fIprop_data\fR);
+.fi
+
+.LP
+.nf
+\fBint\fR \fBdi_path_prop_type\fR(\fBdi_path_prop_t\fR \fIprop\fR, \fBchar **\fR\fIprop_data\fR);
+.fi
+
+.SH PARAMETERS
+.sp
+.ne 2
+.mk
+.na
+\fB\fIprop\fR\fR
+.ad
+.RS 13n
+.rt
+A handle to a property returned by \fBdi_path_prop_next\fR(3DEVINFO).
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIprop_data\fR\fR
+.ad
+.RS 13n
+.rt
+For \fBdi_path_prop_bytes()\fR, the address of a pointer to an unsigned
+character.
+.sp
+For \fBdi_path_prop_ints()\fR, the address of a pointer to an integer.
+.sp
+For \fBdi_path_prop_int64()\fR, the address of a pointer to a 64-bit integer.
+.sp
+For \fBdi_path_prop_strings()\fR, the address of pointer to a character.
+.RE
+
+.SH DESCRIPTION
+.sp
+.LP
+These functions access information associated with path property values and
+attributes such as the property name or data type.
+.sp
+.LP
+The \fBdi_path_prop_name()\fR function returns a pointer to a string containing
+the name of the property.
+.sp
+.LP
+The \fBdi_path_prop_type()\fR function returns the type of the path property.
+The type determines the appropriate interface to access property values.
+Possible property types are the same as for \fBdi_prop_type\fR(3DEVINFO),
+excluding \fBDI_PROP_TYPE_UNKNOWN\fR and \fBDI_PROP_UNDEFINED\fR. Thus,
+\fBdi_path_prop_type()\fR can return one of the following constants:
+.sp
+.ne 2
+.mk
+.na
+\fB\fBDI_PROP_TYPE_INT\fR\fR
+.ad
+.RS 23n
+.rt
+Use \fBdi_path_prop_ints()\fR to access property data.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBDI_PROP_TYPE_INT64\fR\fR
+.ad
+.RS 23n
+.rt
+Use \fBdi_path_prop_int64s()\fR to access property data.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBDI_PROP_TYPE_STRING\fR\fR
+.ad
+.RS 23n
+.rt
+Use \fBdi_path_prop_strings()\fR to access property data.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBDI_PROP_TYPE_BYTE\fR\fR
+.ad
+.RS 23n
+.rt
+Use \fBdi_path_prop_bytes()\fR to access property data.
+.RE
+
+.sp
+.LP
+The \fBdi_path_prop_bytes()\fR function returns the property data as a series
+of unsigned characters.
+.sp
+.LP
+The \fBdi_path_prop_ints()\fR function returns the property data as a series of
+integers.
+.sp
+.LP
+The \fBdi_path_prop_int64s()\fR function returns the property data as a series
+of integers.
+.sp
+.LP
+The \fBdi_path_prop_strings()\fR function returns the property data as a
+concatenation of null-terminated strings.
+.SH RETURN VALUES
+.sp
+.LP
+Upon successful completion, \fBdi_path_prop_bytes()\fR,
+\fBdi_path_prop_ints()\fR, \fBdi_path_prop_int64s()\fR, and
+\fBdi_path_prop_strings()\fR return a non-negative value, indicating the number
+of entries in the property value buffer. If the property is found, the number
+of entries in \fIprop_data\fR is returned. Otherwise, -1 is returned and
+\fBerrno\fR is set to indicate the error.
+.sp
+.LP
+For \fBdi_path_prop_bytes()\fR, the number of entries is the number of unsigned
+characters contained in the buffer pointed to by \fIprop_data\fR.
+.sp
+.LP
+For \fBdi_path_prop_ints()\fR, the number of entries is the number of integers
+contained in the buffer pointed to by \fIprop_data\fR.
+.sp
+.LP
+For \fBdi_path_prop_ints()\fR, the number of entries is the number of 64-bit
+integers contained in the buffer pointed to by \fIprop_data\fR.
+.sp
+.LP
+For \fBdi_path_prop_strings()\fR, the number of entries is the number of
+null-terminated strings contained in the buffer. The strings are stored in a
+concatenated format in the buffer.
+.sp
+.LP
+The \fBdi_path_prop_name()\fR function returns the name of the property.
+.sp
+.LP
+The \fBdi_path_prop_type()\fR function can return one of types described in the
+Description.
+.SH ERRORS
+.sp
+.LP
+These functions will fail if:
+.sp
+.ne 2
+.mk
+.na
+\fB\fBEINVAL\fR\fR
+.ad
+.RS 11n
+.rt
+One of the arguments is invalid. For example, the property type does not match
+the interface.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBENOTSUP\fR\fR
+.ad
+.RS 11n
+.rt
+The snapshot contains no property information.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBENXIO\fR\fR
+.ad
+.RS 11n
+.rt
+The path property does not exist.
+.RE
+
+.SH ATTRIBUTES
+.sp
+.LP
+See \fBattributes\fR(5) for descriptions of the following attributes:
+.sp
+
+.sp
+.TS
+tab() box;
+cw(2.75i) |cw(2.75i)
+lw(2.75i) |lw(2.75i)
+.
+ATTRIBUTE TYPEATTRIBUTE VALUE
+_
+Interface StabilityCommitted
+_
+MT-LevelSafe
+.TE
+
+.SH SEE ALSO
+.sp
+.LP
+\fBdi_path_prop_next\fR(3DEVINFO), \fBdi_prop_type\fR(3DEVINFO),
+\fBlibdevinfo\fR(3LIB), \fBattributes\fR(5)
+.sp
+.LP
+\fIWriting Device Drivers\fR
diff --git a/usr/src/man/man3devinfo/di_path_prop_lookup_bytes.3devinfo b/usr/src/man/man3devinfo/di_path_prop_lookup_bytes.3devinfo
new file mode 100644
index 0000000000..493ed4c848
--- /dev/null
+++ b/usr/src/man/man3devinfo/di_path_prop_lookup_bytes.3devinfo
@@ -0,0 +1,159 @@
+'\" te
+.\" Copyright (c) 2008, Sun Microsystems, Inc. All Rights Reserved.
+.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
+.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
+.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
+.TH di_path_prop_lookup_bytes 3DEVINFO "15 May 2008" "SunOS 5.11" "Device Information Library Functions"
+.SH NAME
+di_path_prop_lookup_bytes, di_path_prop_lookup_int64s,
+di_path_prop_lookup_ints, di_path_prop_lookup_strings \- search for a path
+property
+.SH SYNOPSIS
+.LP
+.nf
+\fBcc\fR [ \fIflag\fR... ] \fIfile\fR... \fB-ldevinfo\fR [ \fIlibrary\fR... ]
+#include <libdevinfo.h>
+
+\fBint\fR \fBdi_path_prop_lookup_bytes\fR(\fBdi_path_t\fR \fIpath\fR,
+ \fBconst char *\fR\fIprop_name\fR);
+.fi
+
+.LP
+.nf
+\fBint\fR \fBdi_path_prop_lookup_int64s\fR(\fBdi_path_t\fR \fIpath\fR,
+ \fBconst char *\fR\fIprop_name\fR);
+.fi
+
+.LP
+.nf
+\fBint\fR \fBdi_path_prop_lookup_ints\fR(\fBdi_path_t\fR \fIpath\fR,
+ \fBconst char *\fR\fIprop_name\fR, \fBchar **\fR\fIprop_data\fR);
+.fi
+
+.LP
+.nf
+\fBint\fR \fBdi_path_prop_lookup_strings\fR(\fBdi_path_t\fR \fIpath\fR,
+ \fBconst char *\fR\fIprop_name\fR, \fBchar **\fR\fIprop_data\fR);
+.fi
+
+.SH PARAMETERS
+.sp
+.ne 2
+.mk
+.na
+\fB\fIpath\fR\fR
+.ad
+.RS 13n
+.rt
+The handle to a path node in a \fBdi_init\fR(3DEVINFO).
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIprop_name\fR\fR
+.ad
+.RS 13n
+.rt
+The name of property for which to search.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIprop_data\fR\fR
+.ad
+.RS 13n
+.rt
+For \fBdi_path_prop_lookup_bytes()\fR, the address to a pointer to an array of
+unsigned characters containing the property data.
+.sp
+For \fBdi_path_prop_lookup_int64()\fR, the address to a pointer to an array of
+64-bit integers containing the property data.
+.sp
+For \fBdi_path_prop_lookup_ints()\fR, the address to a pointer to an array of
+integers containing the property data.
+.sp
+For \fBdi_path_prop_lookup_strings()\fR, the address to a pointer to a buffer
+containing a concatenation of null-terminated strings containing the property
+data.
+.RE
+
+.SH DESCRIPTION
+.sp
+.LP
+These functions return the value of a known property name and type.
+.sp
+.LP
+All memory allocated by these functions is managed by the library and must not
+be freed by the caller.
+.SH RETURN VALUES
+.sp
+.LP
+If the property is found, the number of entries in \fIprop_data\fR is returned.
+Otherwise, -1 is returned and \fBerrno\fR is set to indicate the error.
+.SH ERRORS
+.sp
+.LP
+These functions will fail if:
+.sp
+.ne 2
+.mk
+.na
+\fB\fBEINVAL\fR\fR
+.ad
+.RS 11n
+.rt
+One of the arguments is invalid.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBENOTSUP\fR\fR
+.ad
+.RS 11n
+.rt
+The snapshot contains no property information.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBENXIO\fR\fR
+.ad
+.RS 11n
+.rt
+The path property does not exist.
+.RE
+
+.SH ATTRIBUTES
+.sp
+.LP
+See \fBattributes\fR(5) for descriptions of the following attributes:
+.sp
+
+.sp
+.TS
+tab() box;
+cw(2.75i) |cw(2.75i)
+lw(2.75i) |lw(2.75i)
+.
+ATTRIBUTE TYPEATTRIBUTE VALUE
+_
+Interface StabilityCommitted
+_
+MT-LevelSafe
+.TE
+
+.SH SEE ALSO
+.sp
+.LP
+\fBdi_init\fR(3DEVINFO), \fBlibdevinfo\fR(3LIB), \fBattributes\fR(5)
+.sp
+.LP
+\fIWriting Device Drivers\fR
diff --git a/usr/src/man/man3devinfo/di_path_prop_next.3devinfo b/usr/src/man/man3devinfo/di_path_prop_next.3devinfo
new file mode 100644
index 0000000000..fda9c90bf0
--- /dev/null
+++ b/usr/src/man/man3devinfo/di_path_prop_next.3devinfo
@@ -0,0 +1,117 @@
+'\" te
+.\" Copyright (c) 2008, Sun Microsystems, Inc. All Rights Reserved.
+.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
+.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
+.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
+.TH di_path_prop_next 3DEVINFO "15 May 2008" "SunOS 5.11" "Device Information Library Functions"
+.SH NAME
+di_path_prop_next \- libdevinfo path property traversal function
+.SH SYNOPSIS
+.LP
+.nf
+\fBcc\fR [ \fIflag\fR... ] \fIfile\fR... \fB-ldevinfo\fR [ \fIlibrary\fR... ]
+#include <libdevinfo.h>
+
+\fBdi_path_prop_t\fR \fBdi_path_prop_next\fR(\fBdi_path_t\fR \fIpath\fR,
+ \fBdi_path_prop_t\fR \fIprop\fR);
+.fi
+
+.SH PARAMETERS
+.sp
+.ne 2
+.mk
+.na
+\fB\fIpath\fR\fR
+.ad
+.RS 8n
+.rt
+The handle to a path node in a \fBdi_init\fR(3DEVINFO).
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIprop\fR\fR
+.ad
+.RS 8n
+.rt
+The handle to a property.
+.RE
+
+.SH DESCRIPTION
+.sp
+.LP
+The \fBdi_prop_next()\fR function returns a handle to the next property on the
+property list. If prop is \fBDI_PROP_NIL\fR, the handle to the first property
+is returned.
+.SH RETURN VALUES
+.sp
+.LP
+Upon successful completion, \fBdi_path_prop_next()\fR returns a handle to a
+path property object. Otherwise \fBDI_PROP_NIL\fR is returned, and \fBerrno\fR
+is set to indicate the error.
+.SH ERRORS
+.sp
+.LP
+The \fBdi_prop_next()\fR function will fail if:
+.sp
+.ne 2
+.mk
+.na
+\fB\fBEINVAL\fR\fR
+.ad
+.RS 11n
+.rt
+An argument is invalid.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBENOTSUP\fR\fR
+.ad
+.RS 11n
+.rt
+The snapshot does not contain path property information (\fBDINFOPROP\fR was
+not passed to \fBdi_init()\fR).
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBENXIO\fR\fR
+.ad
+.RS 11n
+.rt
+There are no more properties.
+.RE
+
+.SH ATTRIBUTES
+.sp
+.LP
+See \fBattributes\fR(5) for descriptions of the following attributes:
+.sp
+
+.sp
+.TS
+tab() box;
+cw(2.75i) |cw(2.75i)
+lw(2.75i) |lw(2.75i)
+.
+ATTRIBUTE TYPEATTRIBUTE VALUE
+_
+Interface StabilityCommitted
+_
+MT-LevelSafe
+.TE
+
+.SH SEE ALSO
+.sp
+.LP
+\fBlibdevinfo\fR(3LIB), \fBattributes\fR(5)
+.sp
+.LP
+\fIWriting Device Drivers\fR
diff --git a/usr/src/man/man3devinfo/di_prom_init.3devinfo b/usr/src/man/man3devinfo/di_prom_init.3devinfo
new file mode 100644
index 0000000000..7601b7605d
--- /dev/null
+++ b/usr/src/man/man3devinfo/di_prom_init.3devinfo
@@ -0,0 +1,84 @@
+'\" te
+.\" Copyright (c) 1998, Sun Microsystems, Inc. All Rights Reserved
+.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
+.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
+.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
+.TH di_prom_init 3DEVINFO "1 Dec 1998" "SunOS 5.11" "Device Information Library Functions"
+.SH NAME
+di_prom_init, di_prom_fini \- create and destroy a handle to the PROM device
+information
+.SH SYNOPSIS
+.LP
+.nf
+\fBcc\fR [ \fIflag\fR... ] \fIfile\fR... \fB-ldevinfo\fR [ \fIlibrary\fR... ]
+#include <libdevinfo.h>
+
+\fBdi_prom_handle_t\fR \fBdi_prom_init\fR(\fBvoid\fR);
+.fi
+
+.LP
+.nf
+\fBvoid\fR \fBdi_prom_fini\fR(\fBdi_prom_handle_t\fR \fIph\fR);
+.fi
+
+.SH PARAMETERS
+.sp
+.ne 2
+.mk
+.na
+\fB\fIph\fR\fR
+.ad
+.RS 6n
+.rt
+Handle to \fBprom\fR returned by \fBdi_prom_init()\fR.
+.RE
+
+.SH DESCRIPTION
+.sp
+.LP
+For device nodes whose \fBnodeid\fR value is \fBDI_PROM_NODEID\fR (see
+\fBdi_nodeid\fR(3DEVINFO)), additional properties can be retrieved from the
+\fBPROM\fR. The \fBdi_prom_init()\fR function returns a handle that is used to
+retrieve such properties. This handle is passed to
+\fBdi_prom_prop_lookup_bytes\fR(3DEVINFO) and
+\fBdi_prom_prop_next\fR(3DEVINFO).
+.sp
+.LP
+The \fBdi_prom_fini()\fR function destroys the handle and all handles to the
+\fBPROM\fR device information obtained from that handle.
+.SH RETURN VALUES
+.sp
+.LP
+Upon successful completion, \fBdi_prom_init()\fR returns a handle. Otherwise,
+\fBDI_PROM_HANDLE_NIL\fR is returned and \fBerrno\fR is set to indicate the
+error.
+.SH ERRORS
+.sp
+.LP
+The \fBdi_prom_init()\fR sets \fBerrno\fR function to any error code that can
+also be set by \fBopenprom\fR(7D) or \fBmalloc\fR(3C).
+.SH ATTRIBUTES
+.sp
+.LP
+See \fBattributes\fR(5) for descriptions of the following attributes:
+.sp
+
+.sp
+.TS
+tab() box;
+cw(2.75i) |cw(2.75i)
+lw(2.75i) |lw(2.75i)
+.
+ATTRIBUTE TYPEATTRIBUTE VALUE
+_
+Interface StabilityEvolving
+_
+MT-LevelSafe
+.TE
+
+.SH SEE ALSO
+.sp
+.LP
+\fBdi_nodeid\fR(3DEVINFO), \fBdi_prom_prop_next\fR(3DEVINFO),
+\fBdi_prom_prop_lookup_bytes\fR(3DEVINFO), \fBlibdevinfo\fR(3LIB),
+\fBmalloc\fR(3C), \fBattributes\fR(5), \fBopenprom\fR(7D)
diff --git a/usr/src/man/man3devinfo/di_prom_prop_data.3devinfo b/usr/src/man/man3devinfo/di_prom_prop_data.3devinfo
new file mode 100644
index 0000000000..ad4ab0f233
--- /dev/null
+++ b/usr/src/man/man3devinfo/di_prom_prop_data.3devinfo
@@ -0,0 +1,139 @@
+'\" te
+.\" Copyright (c) 1998, Sun Microsystems, Inc. All Rights Reserved
+.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
+.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
+.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
+.TH di_prom_prop_data 3DEVINFO "1 Dec 1998" "SunOS 5.11" "Device Information Library Functions"
+.SH NAME
+di_prom_prop_data, di_prom_prop_next, di_prom_prop_name \- access PROM device
+information
+.SH SYNOPSIS
+.LP
+.nf
+\fBcc\fR [ \fIflag\fR... ] \fIfile\fR... \fB-ldevinfo\fR [ \fIlibrary\fR... ]
+#include <libdevinfo.h>
+
+\fBdi_prom_prop_t\fR \fBdi_prom_prop_next\fR(\fBdi_prom_handle_t\fR \fIph\fR, \fBdi_node_t\fR \fInode\fR,
+ \fBdi_prom_prop_t\fR \fIprom_prop\fR);
+.fi
+
+.LP
+.nf
+\fBchar *\fR\fBdi_prom_prop_name\fR(\fBdi_prom_prop_t\fR \fIprom_prop\fR);
+.fi
+
+.LP
+.nf
+\fBint\fR \fBdi_prom_prop_data\fR(\fBdi_prom_prop_t\fR \fIprom_prop\fR, \fBuchar_t **\fR\fIprop_data\fR);
+.fi
+
+.SH PARAMETERS
+.sp
+.ne 2
+.mk
+.na
+\fB\fInode\fR\fR
+.ad
+.RS 13n
+.rt
+Handle to a device node in the snapshot of kernel device tree.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIph\fR\fR
+.ad
+.RS 13n
+.rt
+\fBPROM\fR handle
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIprom_prop\fR\fR
+.ad
+.RS 13n
+.rt
+Handle to a \fBPROM\fR property.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIprop_data\fR\fR
+.ad
+.RS 13n
+.rt
+Address of a pointer.
+.RE
+
+.SH DESCRIPTION
+.sp
+.LP
+The \fBdi_prom_prop_next()\fR function obtains a handle to the next property on
+the \fBPROM\fR property list associated with \fInode\fR. If \fIprom_prop\fR is
+\fBDI_PROM_PROP_NIL\fR, the first property associated with \fInode\fR is
+returned.
+.sp
+.LP
+The \fBdi_prom_prop_name()\fR function returns the name of the \fIprom_prop\fR
+property.
+.sp
+.LP
+The \fBdi_prom_prop_data()\fR function returns the value of the \fIprom_prop\fR
+property. The return value is a non-negative integer specifying the size in
+number of bytes in \fIprop_data\fR.
+.sp
+.LP
+All memory allocated by these functions is managed by the library and must not
+be freed by the caller.
+.SH RETURN VALUES
+.sp
+.LP
+The \fBdi_prom_prop_data()\fR function returns the number of bytes in
+\fIprop_data\fR and \fIprop_data\fR is updated to point to a byte array
+containing the property value. If 0 is returned, the property is a boolean
+property and the existence of this property indicates the value is true.
+.sp
+.LP
+The \fBdi_prom_prop_name()\fR function returns a pointer to a string that
+contains the name of \fIprom_prop\fR.
+.sp
+.LP
+The \fBdi_prom_prop_next()\fR function returns a handle to the next \fBPROM\fR
+property. \fBDI_PROM_PROP_NIL\fR is returned if no additional properties exist.
+.SH ERRORS
+.sp
+.LP
+See \fBopenprom\fR(7D) for a description of possible errors.
+.SH ATTRIBUTES
+.sp
+.LP
+See \fBattributes\fR(5) for descriptions of the following attributes:
+.sp
+
+.sp
+.TS
+tab() box;
+cw(2.75i) |cw(2.75i)
+lw(2.75i) |lw(2.75i)
+.
+ATTRIBUTE TYPEATTRIBUTE VALUE
+_
+Interface StabilityEvolving
+_
+MT-LevelSafe
+.TE
+
+.SH SEE ALSO
+.sp
+.LP
+\fBattributes\fR(5), \fBopenprom\fR(7D)
+.sp
+.LP
+\fIWriting Device Drivers\fR
diff --git a/usr/src/man/man3devinfo/di_prom_prop_lookup_bytes.3devinfo b/usr/src/man/man3devinfo/di_prom_prop_lookup_bytes.3devinfo
new file mode 100644
index 0000000000..b9334c5b74
--- /dev/null
+++ b/usr/src/man/man3devinfo/di_prom_prop_lookup_bytes.3devinfo
@@ -0,0 +1,161 @@
+'\" te
+.\" Copyright (c) 1998, Sun Microsystems, Inc. All Rights Reserved
+.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
+.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
+.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
+.TH di_prom_prop_lookup_bytes 3DEVINFO "1 Dec 1998" "SunOS 5.11" "Device Information Library Functions"
+.SH NAME
+di_prom_prop_lookup_bytes, di_prom_prop_lookup_ints,
+di_prom_prop_lookup_strings \- search for a PROM property
+.SH SYNOPSIS
+.LP
+.nf
+\fBcc\fR [ \fIflag\fR... ] \fIfile\fR... \fB-ldevinfo\fR [ \fIlibrary\fR... ]
+#include <libdevinfo.h>
+
+\fBint\fR \fBdi_prom_prop_lookup_bytes\fR(\fBdi_prom_handle_t\fR \fIph\fR, \fBdi_node_t\fR \fInode\fR,
+ \fBconst char *\fR\fIprop_name\fR, \fBuchar_t **\fR\fIprop_data\fR);
+.fi
+
+.LP
+.nf
+\fBint\fR \fBdi_prom_prop_lookup_ints\fR(\fBdi_prom_handle_t\fR \fIph\fR, \fBdi_node_t\fR \fInode\fR,
+ \fBconst char *\fR\fIprop_name\fR, \fBint **\fR\fIprop_data\fR);
+.fi
+
+.LP
+.nf
+\fBint\fR \fBdi_prom_prop_lookup_strings\fR(\fBdi_prom_handle_t\fR \fIph\fR, \fBdi_node_t\fR \fInode\fR,
+ \fBconst char *\fR\fIprop_name\fR, \fBchar **\fR\fIprop_data\fR);
+.fi
+
+.SH PARAMETERS
+.sp
+.ne 2
+.mk
+.na
+\fB\fInode\fR\fR
+.ad
+.RS 13n
+.rt
+Handle to device node in snapshot created by \fBdi_init\fR(3DEVINFO).
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIph\fR\fR
+.ad
+.RS 13n
+.rt
+Handle returned by \fBdi_prom_init\fR(3DEVINFO).
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIprop_data\fR\fR
+.ad
+.RS 13n
+.rt
+For \fBdi_prom_prop_lookup_bytes()\fR, the address of a pointer to an array of
+unsigned characters.
+.sp
+For \fBdi_prom_prop_lookup_ints()\fR, the address of a pointer to an integer.
+.sp
+For \fBdi_prom_prop_lookup_strings()\fR, the address of pointer to a buffer.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIprop_name\fR\fR
+.ad
+.RS 13n
+.rt
+The name of the property being searched.
+.RE
+
+.SH DESCRIPTION
+.sp
+.LP
+These functions return the value of a known \fBPROM\fR property name and value
+type and update the \fIprop_data\fR pointer to reference memory that contains
+the property value. All memory allocated by these functions is managed by the
+library and must not be freed by the caller.
+.SH RETURN VALUES
+.sp
+.LP
+If the property is found, the number of entries in \fIprop_data\fR is returned.
+If the property is a boolean type, 0 is returned and the existence of this
+property indicates the value is true. Otherwise, -1 is returned and \fIerrno\fR
+is set to indicate the error.
+.sp
+.LP
+For \fBdi_prom_prop_lookup_bytes()\fR, the number of entries is the number of
+unsigned characters contained in the buffer pointed to by \fIprop_data\fR.
+.sp
+.LP
+For \fBdi_prom_prop_lookup_ints()\fR, the number of entries is the number of
+integers contained in the buffer pointed to by \fIprop_data\fR.
+.sp
+.LP
+For \fBdi_prom_prop_lookup_strings()\fR, the number of entries is the number of
+null-terminated strings contained in the buffer. The strings are stored in a
+concatenated format in the buffer.
+.SH ERRORS
+.sp
+.LP
+These functions will fail if::
+.sp
+.ne 2
+.mk
+.na
+\fB\fBEINVAL\fR\fR
+.ad
+.RS 10n
+.rt
+Invalid argument.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBENXIO\fR\fR
+.ad
+.RS 10n
+.rt
+The property does not exist.
+.RE
+
+.SH ATTRIBUTES
+.sp
+.LP
+See \fBattributes\fR(5) for descriptions of the following attributes:
+.sp
+
+.sp
+.TS
+tab() box;
+cw(2.75i) |cw(2.75i)
+lw(2.75i) |lw(2.75i)
+.
+ATTRIBUTE TYPEATTRIBUTE VALUE
+_
+Interface StabilityEvolving
+_
+MT-LevelSafe
+.TE
+
+.SH SEE ALSO
+.sp
+.LP
+\fBdi_init\fR(3DEVINFO), \fBdi_prom_prop_next\fR(3DEVINFO),
+\fBlibdevinfo\fR(3LIB), \fBattributes\fR(5), \fBopenprom\fR(7D)
+.sp
+.LP
+\fIWriting Device Drivers\fR
diff --git a/usr/src/man/man3devinfo/di_prop_bytes.3devinfo b/usr/src/man/man3devinfo/di_prop_bytes.3devinfo
new file mode 100644
index 0000000000..e7abe9b4ac
--- /dev/null
+++ b/usr/src/man/man3devinfo/di_prop_bytes.3devinfo
@@ -0,0 +1,254 @@
+'\" te
+.\" Copyright (c) 2001, Sun Microsystems, Inc. All Rights Reserved
+.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
+.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
+.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
+.TH di_prop_bytes 3DEVINFO "27 Mar 2001" "SunOS 5.11" "Device Information Library Functions"
+.SH NAME
+di_prop_bytes, di_prop_devt, di_prop_ints, di_prop_name, di_prop_strings,
+di_prop_type, di_prop_int64 \- access property values and attributes
+.SH SYNOPSIS
+.LP
+.nf
+\fBcc\fR [ \fIflag\fR... ] \fIfile\fR... \fB-ldevinfo\fR [ \fIlibrary\fR... ]
+#include <libdevinfo.h>
+
+\fBint\fR \fBdi_prop_bytes\fR(\fBdi_prop_t\fR \fIprop\fR, \fBuchar_t **\fR\fIprop_data\fR);
+.fi
+
+.LP
+.nf
+\fBdev_t\fR \fBdi_prop_devt\fR(\fBdi_prop_t\fR \fIprop\fR);
+.fi
+
+.LP
+.nf
+\fBint\fR \fBdi_prop_ints\fR(\fBdi_prop_t\fR \fIprop\fR, \fBint **\fR\fIprop_data\fR);
+.fi
+
+.LP
+.nf
+\fBint\fR \fBdi_prop_int64\fR(\fBdi_prop_t\fR \fIprop\fR, \fBint64_t **\fR\fIprop_data\fR);
+.fi
+
+.LP
+.nf
+\fBchar *\fR\fBdi_prop_name\fR(\fBdi_prop_t\fR \fIprop\fR);
+.fi
+
+.LP
+.nf
+\fBint\fR \fBdi_prop_strings\fR(\fBdi_prop_t\fR \fIprop\fR, \fBchar **\fR\fIprop_data\fR);
+.fi
+
+.LP
+.nf
+\fBint\fR \fBdi_prop_type\fR(\fBdi_prop_t\fR \fIprop\fR);
+.fi
+
+.SH PARAMETERS
+.sp
+.ne 2
+.mk
+.na
+\fB\fIprop\fR\fR
+.ad
+.RS 13n
+.rt
+Handle to a property returned by \fBdi_prop_next\fR(3DEVINFO).
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIprop_data\fR\fR
+.ad
+.RS 13n
+.rt
+For \fBdi_prop_bytes()\fR, the address of a pointer to an unsigned character.
+.sp
+For \fBdi_prop_ints()\fR, the address of a pointer to an integer.
+.sp
+For \fBdi_prop_int64()\fR, the address of a pointer to a 64-bit integer.
+.sp
+For \fBdi_prop_strings()\fR, the address of pointer to a character.
+.RE
+
+.SH DESCRIPTION
+.sp
+.LP
+These functions access information associated with property values and
+attributes. All memory allocated by these functions is managed by the library
+and must not be freed by the caller.
+.sp
+.LP
+The \fBdi_prop_bytes()\fR function returns the property data as a series of
+unsigned characters.
+.sp
+.LP
+The \fBdi_prop_devt()\fR function returns the \fBdev_t\fR with which this
+property is associated. If the value is \fBDDI_DEV_T_NONE\fR, the property is
+not associated with any specific minor node.
+.sp
+.LP
+The \fBdi_prop_ints()\fR function returns the property data as a series of
+integers.
+.sp
+.LP
+The \fBdi_prop_int64()\fR function returns the property data as a series of
+64-bit integers.
+.sp
+.LP
+The \fBdi_prop_name()\fR function returns the name of the property.
+.sp
+.LP
+The \fBdi_prop_strings()\fR function returns the property data as a
+concatenation of null-terminated strings.
+.sp
+.LP
+The \fBdi_prop_type()\fR function returns the type of the property. The type
+determines the appropriate interface to access property values. The following
+is a list of possible types:
+.sp
+.ne 2
+.mk
+.na
+\fB\fBDI_PROP_TYPE_BOOLEAN\fR\fR
+.ad
+.RS 25n
+.rt
+There is no interface to call since there is no property data associated with
+boolean properties. The existence of the property defines a \fBTRUE\fR value.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBDI_PROP_TYPE_INT\fR\fR
+.ad
+.RS 25n
+.rt
+Use \fBdi_prop_ints()\fR to access property data.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBDI_PROP_TYPE_INT64\fR\fR
+.ad
+.RS 25n
+.rt
+Use \fBdi_prop_int64()\fR to access property data.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBDI_PROP_TYPE_STRING\fR\fR
+.ad
+.RS 25n
+.rt
+Use \fBdi_prop_strings()\fR to access property data.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBDI_PROP_TYPE_BYTE\fR\fR
+.ad
+.RS 25n
+.rt
+Use \fBdi_prop_bytes()\fR to access property data.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBDI_PROP_TYPE_UNKNOWN \fR\fR
+.ad
+.RS 25n
+.rt
+Use \fBdi_prop_bytes()\fR to access property data. Since the type of property
+is unknown, the caller is responsible for interpreting the contents of the
+data.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBDI_PROP_TYPE_UNDEF_IT\fR\fR
+.ad
+.RS 25n
+.rt
+The property has been undefined by the driver. No property data is available.
+.RE
+
+.SH RETURN VALUES
+.sp
+.LP
+Upon successful completion, \fBdi_prop_bytes()\fR, \fBdi_prop_ints()\fR,
+\fBdi_prop_int64()\fR, and \fBdi_prop_strings()\fR return a non-negative value,
+indicating the number of entries in the property value buffer. See
+\fBdi_prom_prop_lookup_bytes\fR(3DEVINFO) for a description of the return
+values. Otherwise, -1 is returned and \fIerrno\fR is set to indicate the error.
+.sp
+.LP
+The \fBdi_prop_devt()\fR function returns the \fBdev_t\fR value associated with
+the property.
+.sp
+.LP
+The \fBdi_prop_name()\fR function returns a pointer to a string containing the
+name of the property.
+.sp
+.LP
+The \fBdi_prop_type()\fR function can return one of types described in the
+DESCRIPTION section.
+.SH ERRORS
+.sp
+.LP
+These functions will fail if:
+.sp
+.ne 2
+.mk
+.na
+\fB\fBEINVAL\fR\fR
+.ad
+.RS 10n
+.rt
+Invalid argument. For example, the property type does not match the interface.
+.RE
+
+.SH ATTRIBUTES
+.sp
+.LP
+See \fBattributes\fR(5) for descriptions of the following attributes:
+.sp
+
+.sp
+.TS
+tab() box;
+cw(2.75i) |cw(2.75i)
+lw(2.75i) |lw(2.75i)
+.
+ATTRIBUTE TYPEATTRIBUTE VALUE
+_
+Interface StabilityEvolving
+_
+MT-LevelSafe
+.TE
+
+.SH SEE ALSO
+.sp
+.LP
+\fBdi_prom_prop_lookup_bytes\fR(3DEVINFO), \fBdi_prop_next\fR(3DEVINFO),
+\fBlibdevinfo\fR(3LIB), \fBattributes\fR(5)
+.sp
+.LP
+\fIWriting Device Drivers\fR
diff --git a/usr/src/man/man3devinfo/di_prop_lookup_bytes.3devinfo b/usr/src/man/man3devinfo/di_prop_lookup_bytes.3devinfo
new file mode 100644
index 0000000000..098e6ae123
--- /dev/null
+++ b/usr/src/man/man3devinfo/di_prop_lookup_bytes.3devinfo
@@ -0,0 +1,172 @@
+'\" te
+.\" Copyright (c) 2001, Sun Microsystems, Inc. All Rights Reserved
+.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
+.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
+.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
+.TH di_prop_lookup_bytes 3DEVINFO "26 Mar 2001" "SunOS 5.11" "Device Information Library Functions"
+.SH NAME
+di_prop_lookup_bytes, di_prop_lookup_ints, di_prop_lookup_int64,
+di_prop_lookup_strings \- search for a property
+.SH SYNOPSIS
+.LP
+.nf
+\fBcc\fR [ \fIflag\fR... ] \fIfile\fR... \fB-ldevinfo\fR [ \fIlibrary\fR... ]
+#include <libdevinfo.h>
+
+\fBint\fR \fBdi_prop_lookup_bytes\fR(\fBdev_t\fR \fIdev\fR, \fBdi_node_t\fR \fInode\fR,
+ \fBconst char *\fR\fIprop_name\fR, \fBuchar_t **\fR\fIprop_data\fR);
+.fi
+
+.LP
+.nf
+\fBint\fR \fBdi_prop_lookup_ints\fR(\fBdev_t\fR \fIdev\fR, \fBdi_node_t\fR \fInode\fR,
+ \fBconst char *\fR\fIprop_name\fR, \fBint **\fR\fIprop_data\fR);
+.fi
+
+.LP
+.nf
+\fBint\fR \fBdi_prop_lookup_int64\fR(\fBdev_t\fR \fIdev\fR, \fBdi_node_t\fR \fInode\fR,
+ \fBconst char *\fR\fIprop_name\fR, \fBint64_t **\fR\fIprop_data\fR);
+.fi
+
+.LP
+.nf
+\fBint\fR \fBdi_prop_lookup_strings\fR(\fBdev_t\fR \fIdev\fR, \fBdi_node_t\fR \fInode\fR,
+ \fBconst char *\fR\fIprop_name\fR, \fBchar **\fR\fIprop_data\fR);
+.fi
+
+.SH PARAMETERS
+.sp
+.ne 2
+.mk
+.na
+\fB\fIdev\fR\fR
+.ad
+.RS 13n
+.rt
+\fBdev_t\fR of minor node with which the property is associated.
+\fBDDI_DEV_T_ANY\fR is a wild card that matches all \fBdev_t\fR's, including
+\fBDDI_DEV_T_NONE\fR.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fInode\fR\fR
+.ad
+.RS 13n
+.rt
+Handle to the device node with which the property is associated.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIprop_data\fR\fR
+.ad
+.RS 13n
+.rt
+For \fBdi_prop_lookup_bytes()\fR, the address to a pointer to an array of
+unsigned characters containing the property data.
+.sp
+For \fBdi_prop_lookup_ints()\fR, the address to a pointer to an array of
+integers containing the property data.
+.sp
+For \fBdi_prop_lookup_int64()\fR, the address to a pointer to an array of
+64-bit integers containing the property data.
+.sp
+For \fBdi_prop_lookup_strings()\fR, the address to a pointer to a buffer
+containing a concatenation of null-terminated strings containing the property
+data.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIprop_name\fR\fR
+.ad
+.RS 13n
+.rt
+Name of the property for which to search.
+.RE
+
+.SH DESCRIPTION
+.sp
+.LP
+These functions return the value of a known property name type and \fBdev_t\fR
+value. All memory allocated by these functions is managed by the library and
+must not be freed by the caller.
+.SH RETURN VALUES
+.sp
+.LP
+If the property is found, the number of entries in \fIprop_data\fR is returned.
+If the property is a boolean type, 0 is returned and the existence of this
+property indicates the value is true. Otherwise, -1 is returned and \fIerrno\fR
+is set to indicate the error.
+.SH ERRORS
+.sp
+.LP
+These functions will fail if:
+.sp
+.ne 2
+.mk
+.na
+\fB\fBEINVAL\fR\fR
+.ad
+.RS 11n
+.rt
+Invalid argument.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBENOTSUP\fR\fR
+.ad
+.RS 11n
+.rt
+The snapshot contains no property information.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBENXIO\fR\fR
+.ad
+.RS 11n
+.rt
+The property does not exist; try \fBdi_prom_prop_lookup_*()\fR.
+.RE
+
+.SH ATTRIBUTES
+.sp
+.LP
+See \fBattributes\fR(5) for descriptions of the following attributes:
+.sp
+
+.sp
+.TS
+tab() box;
+cw(2.75i) |cw(2.75i)
+lw(2.75i) |lw(2.75i)
+.
+ATTRIBUTE TYPEATTRIBUTE VALUE
+_
+Interface StabilityEvolving
+_
+MT-LevelSafe
+.TE
+
+.SH SEE ALSO
+.sp
+.LP
+\fBdi_init\fR(3DEVINFO), \fBdi_prom_prop_lookup_bytes\fR(3DEVINFO),
+\fBlibdevinfo\fR(3LIB), \fBattributes\fR(5)
+.sp
+.LP
+\fIWriting Device Drivers\fR
diff --git a/usr/src/man/man3devinfo/di_prop_next.3devinfo b/usr/src/man/man3devinfo/di_prop_next.3devinfo
new file mode 100644
index 0000000000..e2bf1d6f1d
--- /dev/null
+++ b/usr/src/man/man3devinfo/di_prop_next.3devinfo
@@ -0,0 +1,114 @@
+'\" te
+.\" Copyright (c) 1998, Sun Microsystems, Inc. All Rights Reserved
+.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
+.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
+.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
+.TH di_prop_next 3DEVINFO "1 Dec 1998" "SunOS 5.11" "Device Information Library Functions"
+.SH NAME
+di_prop_next \- libdevinfo property traversal function
+.SH SYNOPSIS
+.LP
+.nf
+\fBcc\fR [ \fIflag\fR... ] \fIfile\fR... \fB-ldevinfo\fR [ \fIlibrary\fR... ]
+#include <libdevinfo.h>
+
+\fBdi_prop_t\fR \fBdi_prop_next\fR(\fBdi_node_t\fR \fInode\fR, \fBdi_prop_t\fR \fIprop\fR);
+.fi
+
+.SH PARAMETERS
+.sp
+.ne 2
+.mk
+.na
+\fB\fInode\fR\fR
+.ad
+.RS 8n
+.rt
+Handle to a device node.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIprop\fR\fR
+.ad
+.RS 8n
+.rt
+Handle to a property.
+.RE
+
+.SH DESCRIPTION
+.sp
+.LP
+The \fBdi_prop_next()\fR function returns a handle to the next property on the
+property list. If \fIprop\fR is \fBDI_PROP_NIL\fR, the handle to the first
+property is returned.
+.SH RETURN VALUES
+.sp
+.LP
+Upon successful completion, \fBdi_prop_next()\fR returns a handle. Otherwise
+\fBDI_PROP_NIL\fR is returned and \fIerrno\fR is set to indicate the error.
+.SH ERRORS
+.sp
+.LP
+The \fBdi_prop_next()\fR function will fail if:
+.sp
+.ne 2
+.mk
+.na
+\fB\fBEINVAL\fR\fR
+.ad
+.RS 11n
+.rt
+Invalid argument.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBENOTSUP\fR\fR
+.ad
+.RS 11n
+.rt
+The snapshot does not contain property information.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBENXIO\fR\fR
+.ad
+.RS 11n
+.rt
+There are no more properties.
+.RE
+
+.SH ATTRIBUTES
+.sp
+.LP
+See \fBattributes\fR(5) for descriptions of the following attributes:
+.sp
+
+.sp
+.TS
+tab() box;
+cw(2.75i) |cw(2.75i)
+lw(2.75i) |lw(2.75i)
+.
+ATTRIBUTE TYPEATTRIBUTE VALUE
+_
+Interface StabilityEvolving
+_
+MT-LevelSafe
+.TE
+
+.SH SEE ALSO
+.sp
+.LP
+\fBdi_init\fR(3DEVINFO), \fBlibdevinfo\fR(3LIB), \fBattributes\fR(5)
+.sp
+.LP
+\fIWriting Device Drivers\fR
diff --git a/usr/src/man/man3devinfo/di_walk_link.3devinfo b/usr/src/man/man3devinfo/di_walk_link.3devinfo
new file mode 100644
index 0000000000..25482116c6
--- /dev/null
+++ b/usr/src/man/man3devinfo/di_walk_link.3devinfo
@@ -0,0 +1,151 @@
+'\" te
+.\" Copyright (c) 2004, Sun Microsystems, Inc. All Rights Reserved.
+.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
+.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
+.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
+.TH di_walk_link 3DEVINFO "22 Mar 2004" "SunOS 5.11" "Device Information Library Functions"
+.SH NAME
+di_walk_link \- traverse libdevinfo links
+.SH SYNOPSIS
+.LP
+.nf
+cc [ \fIflag\fR\&.\|.\|. ] \fIfile\fR\&.\|.\|. \fB-ldevinfo\fR [ \fIlibrary\fR\&.\|.\|. ]
+#include <libdevinfo.h>
+
+\fBint\fR \fBdi_walk_link\fR(\fBdi_node_t\fR \fIroot\fR, \fBuint_t\fR \fIflag\fR, \fBuint_t\fR \fIendpoint\fR, \fBvoid *\fR\fIarg\fR,
+ \fBint (*\fR\fIlink_callback\fR)(di_link_t \fIlink\fR, void *\fIarg\fR));
+.fi
+
+.SH PARAMETERS
+.sp
+.ne 2
+.mk
+.na
+\fB\fIroot\fR\fR
+.ad
+.RS 17n
+.rt
+The handle to the root node of the subtree to visit.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIflag\fR\fR
+.ad
+.RS 17n
+.rt
+Specify 0. Reserved for future use.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIendpoint\fR\fR
+.ad
+.RS 17n
+.rt
+Specify if the current node being visited should be the target or source of an
+link, either \fBDI_LINK_TGT\fR or \fBDI_LINK_SRC\fR
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIarg\fR\fR
+.ad
+.RS 17n
+.rt
+A pointer to caller-specific data.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIlink_callback\fR\fR
+.ad
+.RS 17n
+.rt
+The caller-supplied callback function.
+.RE
+
+.SH DESCRIPTION
+.sp
+.LP
+The \fBdi_walk_link()\fR function visits all nodes in the subtree rooted at
+\fIroot\fR. For each node found, the caller-supplied function
+\fIlink_callback\fR() is invoked for each link associated with that node where
+that node is the specified \fIendpoint\fR of the link. The return value of
+\fIlink_callback\fR() specifies subsequent walking behavior. See RETURN VALUES.
+.SH RETURN VALUES
+.sp
+.LP
+Upon successful completion, \fBdi_walk_link()\fR returns 0. Otherwise, -1 is
+returned and \fBerrno\fR is set to indicate the error.
+.sp
+.LP
+The callback function, \fIlink_callback\fR(), can return one of the following:
+.sp
+.ne 2
+.mk
+.na
+\fB\fBDI_WALK_CONTINUE\fR\fR
+.ad
+.RS 21n
+.rt
+Continue walking.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBDI_WALK_TERMINATE\fR\fR
+.ad
+.RS 21n
+.rt
+Terminate the walk immediately.
+.RE
+
+.SH ERRORS
+.sp
+.LP
+The \fBdi_walk_link()\fR function will fail if:
+.sp
+.ne 2
+.mk
+.na
+\fB\fBEINVAL\fR\fR
+.ad
+.RS 10n
+.rt
+An argument is invalid.
+.RE
+
+.SH ATTRIBUTES
+.sp
+.LP
+See \fBattributes\fR(5) for descriptions of the following attributes:
+.sp
+
+.sp
+.TS
+tab() box;
+cw(2.75i) |cw(2.75i)
+lw(2.75i) |lw(2.75i)
+.
+ATTRIBUTE TYPEATTRIBUTE VALUE
+_
+Interface StabilityEvolving
+_
+MT-LevelSafe
+.TE
+
+.SH SEE ALSO
+.sp
+.LP
+\fBdi_init\fR(3DEVINFO), \fBlibdevinfo\fR(3LIB), \fBattributes\fR(5)
diff --git a/usr/src/man/man3devinfo/di_walk_lnode.3devinfo b/usr/src/man/man3devinfo/di_walk_lnode.3devinfo
new file mode 100644
index 0000000000..805587e137
--- /dev/null
+++ b/usr/src/man/man3devinfo/di_walk_lnode.3devinfo
@@ -0,0 +1,139 @@
+'\" te
+.\" Copyright (c) 2004, Sun Microsystems, Inc. All Rights Reserved.
+.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
+.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
+.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
+.TH di_walk_lnode 3DEVINFO "22 Mar 2004" "SunOS 5.11" "Device Information Library Functions"
+.SH NAME
+di_walk_lnode \- traverse libdevinfo lnodes
+.SH SYNOPSIS
+.LP
+.nf
+cc [ \fIflag\fR\&.\|.\|. ] \fIfile\fR\&.\|.\|. \fB-ldevinfo\fR [ \fIlibrary\fR\&.\|.\|. ]
+#include <libdevinfo.h>
+
+\fBint\fR \fBdi_walk_lnode\fR(\fBdi_node_t\fR \fIroot\fR, \fBuint_t\fR \fIflag\fR, \fBvoid *\fR\fIarg\fR,
+ \fBint (*\fR\fIlnode_callback\fR)(di_lnode_t \fIlink\fR, void *\fIarg\fR));
+.fi
+
+.SH PARAMETERS
+.sp
+.ne 2
+.mk
+.na
+\fB\fIroot\fR\fR
+.ad
+.RS 18n
+.rt
+The handle to the root node of the subtree to visit.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIflag\fR\fR
+.ad
+.RS 18n
+.rt
+Specify 0. Reserved for future use.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIarg\fR\fR
+.ad
+.RS 18n
+.rt
+A pointer to caller-specific data.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIlnode_callback\fR\fR
+.ad
+.RS 18n
+.rt
+The caller-supplied callback function.
+.RE
+
+.SH DESCRIPTION
+.sp
+.LP
+The \fBdi_walk_lnode()\fR function visits all nodes in the subtree rooted at
+\fIroot\fR. For each node found, the caller-supplied function
+\fIlnode_callback\fR() is invoked for each lnode associated with that node.
+The return value of \fIlnode_callback\fR() specifies subsequent walking
+behavior where that node is the specified \fIendpoint\fR of the link.
+.SH RETURN VALUES
+.sp
+.LP
+Upon successful completion, \fBdi_walk_lnode()\fR returns 0. Otherwise, -1 is
+returned and \fBerrno\fR is set to indicate the error.
+.sp
+.LP
+The callback function \fIlnode_callback\fR() can return one of the following:
+.sp
+.ne 2
+.mk
+.na
+\fB\fBDI_WALK_CONTINUE\fR\fR
+.ad
+.RS 21n
+.rt
+Continue walking.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBDI_WALK_TERMINATE\fR\fR
+.ad
+.RS 21n
+.rt
+Terminate the walk immediately.
+.RE
+
+.SH ERRORS
+.sp
+.LP
+The \fBdi_walk_lnode()\fR function will fail if:
+.sp
+.ne 2
+.mk
+.na
+\fB\fBEINVAL\fR\fR
+.ad
+.RS 10n
+.rt
+An argument is invalid.
+.RE
+
+.SH ATTRIBUTES
+.sp
+.LP
+See \fBattributes\fR(5) for descriptions of the following attributes:
+.sp
+
+.sp
+.TS
+tab() box;
+cw(2.75i) |cw(2.75i)
+lw(2.75i) |lw(2.75i)
+.
+ATTRIBUTE TYPEATTRIBUTE VALUE
+_
+Interface StabilityEvolving
+_
+MT-LevelSafe
+.TE
+
+.SH SEE ALSO
+.sp
+.LP
+\fBdi_init\fR(3DEVINFO), \fBlibdevinfo\fR(3LIB), \fBattributes\fR(5)
diff --git a/usr/src/man/man3devinfo/di_walk_minor.3devinfo b/usr/src/man/man3devinfo/di_walk_minor.3devinfo
new file mode 100644
index 0000000000..8a17de7d77
--- /dev/null
+++ b/usr/src/man/man3devinfo/di_walk_minor.3devinfo
@@ -0,0 +1,186 @@
+'\" te
+.\" Copyright (c) 2009, Sun Microsystems, Inc. All Rights Reserved
+.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
+.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
+.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
+.TH di_walk_minor 3DEVINFO "14 Jan 2009" "SunOS 5.11" "Device Information Library Functions"
+.SH NAME
+di_walk_minor \- traverse libdevinfo minor nodes
+.SH SYNOPSIS
+.LP
+.nf
+\fBcc\fR [ \fIflag\fR... ] \fIfile\fR... \fB-ldevinfo\fR [ \fIlibrary\fR... ]
+#include <libdevinfo.h>
+
+\fBint\fR \fBdi_walk_minor\fR(\fBdi_node_t\fR \fIroot\fR, \fBconst char *\fR\fIminor_nodetype\fR,
+ \fBuint_t\fR \fIflag\fR, \fBvoid *\fR\fIarg\fR, \fBint\fR (\fI*minor_callback\fR)(di_node_t \fInode\fR,
+ di_minor_t \fIminor\fR, void *\fIarg\fR));
+.fi
+
+.SH PARAMETERS
+.sp
+.ne 2
+.mk
+.na
+\fB\fIarg\fR\fR
+.ad
+.RS 18n
+.rt
+Pointer to caller- specific user data.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIflag\fR\fR
+.ad
+.RS 18n
+.rt
+Specify 0. Reserved for future use.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIminor\fR\fR
+.ad
+.RS 18n
+.rt
+The minor node visited.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIminor_nodetype\fR\fR
+.ad
+.RS 18n
+.rt
+A character string specifying the minor data type, which may be one of the
+types defined by the Solaris DDI framework, for example, \fBDDI_NT_BLOCK\fR.
+\fBNULL\fR matches all \fIminor_node\fR types. See
+\fBddi_create_minor_node\fR(9F).
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fInode\fR\fR
+.ad
+.RS 18n
+.rt
+The device node with which to the minor node is associated.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIroot\fR\fR
+.ad
+.RS 18n
+.rt
+Root of subtree to visit.
+.RE
+
+.SH DESCRIPTION
+.sp
+.LP
+The \fBdi_walk_minor()\fR function visits all minor nodes attached to device
+nodes in a subtree rooted at \fIroot\fR. For each minor node that matches
+\fIminor_nodetype\fR, the caller-supplied function \fIminor_callback\fR() is
+invoked. The walk terminates immediately when \fIminor_callback\fR() returns
+\fBDI_WALK_TERMINATE\fR.
+.SH RETURN VALUES
+.sp
+.LP
+Upon successful completion, \fBdi_walk_minor()\fR returns 0. Otherwise, -1 is
+returned and errno is set to indicate the error.
+.sp
+.LP
+The \fBminor_callback()\fR function returns one of the following:
+.sp
+.ne 2
+.mk
+.na
+\fB\fBDI_WALK_CONTINUE\fR\fR
+.ad
+.RS 21n
+.rt
+Continue to visit subsequent minor data nodes.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBDI_WALK_TERMINATE\fR\fR
+.ad
+.RS 21n
+.rt
+Terminate the walk immediately.
+.RE
+
+.SH ERRORS
+.sp
+.LP
+The \fBdi_walk_minor()\fR function will fail if:
+.sp
+.ne 2
+.mk
+.na
+\fB\fBEINVAL\fR\fR
+.ad
+.RS 10n
+.rt
+Invalid argument.
+.RE
+
+.SH ATTRIBUTES
+.sp
+.LP
+See \fBattributes\fR(5) for descriptions of the following attributes:
+.sp
+
+.sp
+.TS
+tab() box;
+cw(2.75i) |cw(2.75i)
+lw(2.75i) |lw(2.75i)
+.
+ATTRIBUTE TYPEATTRIBUTE VALUE
+_
+Interface StabilityCommitted
+_
+MT-LevelSafe
+.TE
+
+.SH SEE ALSO
+.sp
+.LP
+\fBdladm\fR(1M), \fBdi_minor_nodetype\fR(3DEVINFO), dlpi_walk(3DLPI),
+\fBlibdevinfo\fR(3LIB), \fBattributes\fR(5), \fBfilesystem\fR(5),
+\fBddi_create_minor_node\fR(9F)
+.sp
+.LP
+\fIWriting Device Drivers\fR
+.SH NOTES
+.sp
+.LP
+The \fBdi_walk_minor()\fR function is no longer an accurate method for walking
+network datalink interfaces on the system. Applications should use
+\fBdlpi_walk\fR(3DLPI) instead. It has been common for applications to use
+\fBdi_walk_minor()\fR to walk networking devices by passing in a
+\fBminor_nodetype\fR of \fBDDI_NT_NET\fR, in most cases to discover the set of
+DLPI devices on the system. Solaris now makes a layering distinction between
+networking devices (the objects displayed in the \fBDEVICE\fR field by
+\fBdladm\fR \fBshow-phys\fR) and network datalink interfaces (the objects
+displayed by \fBdladm\fR \fBshow-link\fR). Datalink interfaces are represented
+as the set of DLPI device nodes that applications can open by using
+\fBdlpi_open\fR(3DLPI) or by opening DLPI nodes out of the \fB/dev/net\fR
+filesystem (see \fBfilesystem\fR(5)). The \fBdlpi_walk\fR(3DLPI) function is
+the proper function to walk these nodes.
diff --git a/usr/src/man/man3devinfo/di_walk_node.3devinfo b/usr/src/man/man3devinfo/di_walk_node.3devinfo
new file mode 100644
index 0000000000..e06b04c699
--- /dev/null
+++ b/usr/src/man/man3devinfo/di_walk_node.3devinfo
@@ -0,0 +1,164 @@
+'\" te
+.\" Copyright (c) 2009, Sun Microsystems, Inc. All Rights Reserved
+.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
+.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
+.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
+.TH di_walk_node 3DEVINFO "16 Jan 2009" "SunOS 5.11" "Device Information Library Functions"
+.SH NAME
+di_walk_node \- traverse libdevinfo device nodes
+.SH SYNOPSIS
+.LP
+.nf
+\fBcc\fR [ \fIflag\fR... ] \fIfile\fR... \fB-ldevinfo\fR [ \fIlibrary\fR... ]
+#include <libdevinfo.h>
+
+\fBint\fR \fBdi_walk_node\fR(\fBdi_node_t\fR \fIroot\fR, \fBuint_t\fR \fIflag\fR, \fBvoid *\fR\fIarg\fR,
+ \fBint\fR \fI(*node_callback)\fR(\fBdi_node_t\fR \fInode\fR, \fBvoid *\fR\fIarg\fR));
+.fi
+
+.SH DESCRIPTION
+.sp
+.LP
+The \fBdi_walk_node()\fR function visits all nodes in the subtree rooted at
+\fIroot\fR. For each node found, the caller-supplied function
+\fInode_callback\fR() is invoked. The return value of \fInode_callback\fR()
+specifies subsequent walking behavior.
+.SH PARAMETERS
+.sp
+.ne 2
+.mk
+.na
+\fB\fIarg\fR\fR
+.ad
+.RS 8n
+.rt
+Pointer to caller-specific data.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIflag\fR\fR
+.ad
+.RS 8n
+.rt
+Specifies walking order, either \fBDI_WALK_CLDFIRST\fR (depth first) or
+\fBDI_WALK_SIBFIRST\fR (breadth first). \fBDI_WALK_CLDFIRST\fR is the default.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fInode\fR\fR
+.ad
+.RS 8n
+.rt
+The node being visited.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fIroot\fR\fR
+.ad
+.RS 8n
+.rt
+The handle to the root node of the subtree to visit.
+.RE
+
+.SH RETURN VALUES
+.sp
+.LP
+Upon successful completion, \fBdi_walk_node()\fR returns 0. Otherwise, \fB-1\fR
+is returned and \fIerrno\fR is set to indicate the error.
+.sp
+.LP
+The \fInode_callback\fR() function can return one of the following:
+.sp
+.ne 2
+.mk
+.na
+\fB\fBDI_WALK_CONTINUE\fR\fR
+.ad
+.RS 22n
+.rt
+Continue walking.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBDI_WALK_PRUNESIB\fR\fR
+.ad
+.RS 22n
+.rt
+Continue walking, but skip siblings and their child nodes.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBDI_WALK_PRUNECHILD\fR\fR
+.ad
+.RS 22n
+.rt
+Continue walking, but skip subtree rooted at current node.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBDI_WALK_TERMINATE\fR\fR
+.ad
+.RS 22n
+.rt
+Terminate the walk immediately.
+.RE
+
+.SH ERRORS
+.sp
+.LP
+The \fBdi_walk_node()\fR function will fail if:
+.sp
+.ne 2
+.mk
+.na
+\fB\fBEINVAL\fR\fR
+.ad
+.RS 10n
+.rt
+Invalid argument.
+.RE
+
+.SH ATTRIBUTES
+.sp
+.LP
+See \fBattributes\fR(5) for descriptions of the following attributes:
+.sp
+
+.sp
+.TS
+tab() box;
+cw(2.75i) |cw(2.75i)
+lw(2.75i) |lw(2.75i)
+.
+ATTRIBUTE TYPEATTRIBUTE VALUE
+_
+Interface StabilityCommitted
+_
+MT-LevelSafe
+.TE
+
+.SH SEE ALSO
+.sp
+.LP
+\fBdi_init\fR(3DEVINFO), \fBlibdevinfo\fR(3LIB), \fBattributes\fR(5)
+.sp
+.LP
+\fIWriting Device Drivers\fR