man pages section 3: Extended Library Functions, Volume 1

Exit Print View

Updated: July 2014
 
 

di_walk_node(3DEVINFO)

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 for Oracle Solaris 11.2