Content-type: text/html
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(5) for descriptions of the following attributes:
ATTRIBUTE TYPE | ATTRIBUTE VALUE |
Interface Stability | Evolving |
MT-Level | Safe |
di_init(3DEVINFO), libdevinfo(3LIB), attributes(5)
Writing Device Drivers