DI_WALK_NODE(3DEVINFO) Device Information Library Functions


NAME


di_walk_node - traverse libdevinfo device nodes

SYNOPSIS


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

int di_walk_node(di_node_t root, uint_t flag, void *arg,
int (*node_callback)(di_node_t node, void *arg));


DESCRIPTION


The di_walk_node() function visits all nodes in the subtree rooted at
root. For each node found, the caller-supplied function node_callback()
is invoked. The return value of node_callback() specifies subsequent
walking behavior.

PARAMETERS


arg
Pointer to caller-specific data.


flag
Specifies walking order, either DI_WALK_CLDFIRST (depth first) or
DI_WALK_SIBFIRST (breadth first). DI_WALK_CLDFIRST is the
default.


node
The node being visited.


root
The handle to the root node of the subtree to visit.


RETURN VALUES


Upon successful completion, di_walk_node() returns 0. Otherwise, -1 is
returned and errno is set to indicate the error.


The node_callback() function can return one of the following:

DI_WALK_CONTINUE
Continue walking.


DI_WALK_PRUNESIB
Continue walking, but skip siblings and their child
nodes.


DI_WALK_PRUNECHILD
Continue walking, but skip subtree rooted at
current node.


DI_WALK_TERMINATE
Terminate the walk immediately.


ERRORS


The di_walk_node() function will fail if:

EINVAL
Invalid argument.


ATTRIBUTES


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


+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | Committed |
+--------------------+-----------------+
|MT-Level | Safe |
+--------------------+-----------------+

SEE ALSO


di_init(3DEVINFO), libdevinfo(3LIB), attributes(5)


Writing Device Drivers


January 16, 2009 DI_WALK_NODE(3DEVINFO)