Current File : //usr/share/man/man3devinfo/di_walk_node.3devinfo
'\" te
.\" Copyright (c) 2009, Sun Microsystems, Inc.  All Rights Reserved
.TH di_walk_node 3DEVINFO "16 Jan 2009" "SunOS 5.11" "Device Information Library Functions"
.SH NAME
di_walk_node \- traverse libdevinfo device nodes
.SH SYNOPSIS
.LP
.nf
\fBcc\fR [ \fIflag\fR... ] \fIfile\fR... \fB-ldevinfo\fR [ \fIlibrary\fR... ]
#include <libdevinfo.h>

\fBint\fR \fBdi_walk_node\fR(\fBdi_node_t\fR \fIroot\fR, \fBuint_t\fR \fIflag\fR, \fBvoid *\fR\fIarg\fR,
     \fBint\fR \fI(*node_callback)\fR(\fBdi_node_t\fR \fInode\fR, \fBvoid *\fR\fIarg\fR));
.fi

.SH DESCRIPTION
.sp
.LP
The \fBdi_walk_node()\fR function visits all nodes in the subtree rooted at \fIroot\fR. For each node found, the caller-supplied function \fInode_callback\fR() is invoked. The return value of \fInode_callback\fR() specifies subsequent walking behavior.
.SH PARAMETERS
.sp
.ne 2
.mk
.na
\fB\fIarg\fR\fR
.ad
.RS 8n
.rt  
Pointer to caller-specific data.
.RE

.sp
.ne 2
.mk
.na
\fB\fIflag\fR\fR
.ad
.RS 8n
.rt  
Specifies walking order, either \fBDI_WALK_CLDFIRST\fR (depth first) or \fBDI_WALK_SIBFIRST\fR (breadth first). \fBDI_WALK_CLDFIRST\fR is the default.
.RE

.sp
.ne 2
.mk
.na
\fB\fInode\fR\fR
.ad
.RS 8n
.rt  
The node being visited.
.RE

.sp
.ne 2
.mk
.na
\fB\fIroot\fR\fR
.ad
.RS 8n
.rt  
The handle to the root node of the subtree to visit.
.RE

.SH RETURN VALUES
.sp
.LP
Upon successful completion, \fBdi_walk_node()\fR returns 0. Otherwise, \fB-1\fR is returned and \fIerrno\fR is set to indicate the error.
.sp
.LP
The \fInode_callback\fR() function can return one of the following:
.sp
.ne 2
.mk
.na
\fB\fBDI_WALK_CONTINUE\fR\fR
.ad
.RS 22n
.rt  
Continue walking.
.RE

.sp
.ne 2
.mk
.na
\fB\fBDI_WALK_PRUNESIB\fR\fR
.ad
.RS 22n
.rt  
Continue walking, but skip siblings and their child nodes. 
.RE

.sp
.ne 2
.mk
.na
\fB\fBDI_WALK_PRUNECHILD\fR\fR
.ad
.RS 22n
.rt  
Continue walking, but skip subtree rooted at current node.
.RE

.sp
.ne 2
.mk
.na
\fB\fBDI_WALK_TERMINATE\fR\fR
.ad
.RS 22n
.rt  
Terminate the walk immediately.
.RE

.SH ERRORS
.sp
.LP
The \fBdi_walk_node()\fR function will fail if:
.sp
.ne 2
.mk
.na
\fB\fBEINVAL\fR\fR
.ad
.RS 10n
.rt  
Invalid argument.
.RE

.SH ATTRIBUTES
.sp
.LP
See \fBattributes\fR(5)  for descriptions of the following attributes:
.sp

.sp
.TS
tab() box;
cw(2.75i) |cw(2.75i) 
lw(2.75i) |lw(2.75i) 
.
ATTRIBUTE TYPEATTRIBUTE VALUE
_
Interface StabilityCommitted
_
MT-LevelSafe
.TE

.SH SEE ALSO
.sp
.LP
\fBdi_init\fR(3DEVINFO), \fBlibdevinfo\fR(3LIB), \fBattributes\fR(5)
.sp
.LP
\fIWriting Device Drivers for Oracle Solaris 11.2\fR