xref: /illumos-gate/usr/src/man/man3devinfo/di_path_client_next_path.3devinfo (revision 533affcbc7fc4d0c8132976ea454aaa715fe2307)
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]
DI_PATH_CLIENT_NEXT_PATH 3DEVINFO "May 15, 2008"
NAME
di_path_client_next_path, di_path_phci_next_path - libdevinfo path node traversal functions
SYNOPSIS

cc [ flag... ] file... -ldevinfo [ library... ]
#include <libdevinfo.h>

di_path_t di_path_client_next_path(di_node_t node node,
 di_path_t path);

di_path_t di_path_phci_next_path(di_node_t node node,
 di_path_t path);
PARAMETERS
node

The handle to a device node in a di_init(3DEVINFO) snapshot. For di_path_client_next_path(), node must be a client device node. For di_path_phci_next_path(), node must be a pHCI device node.

path

DI_PATH_NIL, or the handle to a path node in a snapshot.

DESCRIPTION

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.

The di_path_client_next_path() 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 NULL, di_path_client_next_path() returns the first path node associated with the client. To walk all path nodes associated with a client, returned di_path_t values are fed back into di_path_client_next_path(), via the path argument, until a null path node is returned. For each path node, di_path_bus_addr(3DEVINFO) returns the pHCI child path node unit-address.

The di_path_phci_next_path() function is called on a multipathing pHCI device node. If the path argument is NULL, di_path_phci_next_path() returns the first path node associated with the pHCI. To walk all path nodes associated with a pHCI, returned di_path_t values are fed back into di_path_phci_next_path(), via the path argument, until a null path node is returned. For each path node, di_path_client_node(3DEVINFO) provides a pointer to the associated client device node.

A device node can be a client device node of one multipathing class and a pHCI device node of another class.

RETURN VALUES

Upon successful completion, a handle to the next path node is returned. Otherwise, DI_PATH_NIL is returned and errno is set to indicate the error.

ERRORS

These functions will fail if: EINVAL

One or more argument was invalid.

ENOTSUP

Path node information is not available in the snapshot.

ENXIO

The end of the path node list was reached.

ATTRIBUTES

See attributes(7) for descriptions of the following attributes:

ATTRIBUTE TYPE ATTRIBUTE VALUE
Interface Stability Committed
MT-Level Safe
SEE ALSO

di_init (3DEVINFO), di_path_bus_addr (3DEVINFO), di_path_client_node (3DEVINFO), libdevinfo (3LIB), attributes (7)

Writing Device Drivers