DI_WALK_NODE(3DEVINFO) Device Information Library Functions DI_WALK_NODE(3DEVINFO)

di_walk_node - traverse libdevinfo device nodes

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));

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.

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.

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.

The di_walk_node() function will fail if:

EINVAL

Invalid argument.

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

ATTRIBUTE TYPE ATTRIBUTE VALUE
Interface Stability Committed
MT-Level Safe

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

Writing Device Drivers

January 16, 2009 OmniOS