xref: /illumos-gate/usr/src/man/man3proc/Plwp_iter.3proc (revision 43051d2742bbe5911de73322064cb573b6aff975)
1*43051d27SRobert Mustacchi.\"
2*43051d27SRobert Mustacchi.\" This file and its contents are supplied under the terms of the
3*43051d27SRobert Mustacchi.\" Common Development and Distribution License ("CDDL"), version 1.0.
4*43051d27SRobert Mustacchi.\" You may only use this file in accordance with the terms of version
5*43051d27SRobert Mustacchi.\" 1.0 of the CDDL.
6*43051d27SRobert Mustacchi.\"
7*43051d27SRobert Mustacchi.\" A full copy of the text of the CDDL should have accompanied this
8*43051d27SRobert Mustacchi.\" source.  A copy of the CDDL is also available via the Internet at
9*43051d27SRobert Mustacchi.\" http://www.illumos.org/license/CDDL.
10*43051d27SRobert Mustacchi.\"
11*43051d27SRobert Mustacchi.\"
12*43051d27SRobert Mustacchi.\" Copyright 2015 Joyent, Inc.
13*43051d27SRobert Mustacchi.\"
14*43051d27SRobert Mustacchi.Dd May 11, 2016
15*43051d27SRobert Mustacchi.Dt PLWP_ITER 3PROC
16*43051d27SRobert Mustacchi.Os
17*43051d27SRobert Mustacchi.Sh NAME
18*43051d27SRobert Mustacchi.Nm Plwp_iter ,
19*43051d27SRobert Mustacchi.Nm Plwp_iter_all
20*43051d27SRobert Mustacchi.Nd iterate over threads
21*43051d27SRobert Mustacchi.Sh SYNOPSIS
22*43051d27SRobert Mustacchi.Lb libproc
23*43051d27SRobert Mustacchi.In libproc.h
24*43051d27SRobert Mustacchi.Ft int
25*43051d27SRobert Mustacchi.Fo Plwp_iter
26*43051d27SRobert Mustacchi.Fa "struct ps_prochandle *P"
27*43051d27SRobert Mustacchi.Fa "proc_lwp_f *func",
28*43051d27SRobert Mustacchi.Fa "void *data"
29*43051d27SRobert Mustacchi.Fc
30*43051d27SRobert Mustacchi.Ft int
31*43051d27SRobert Mustacchi.Fo Plwp_iter_all
32*43051d27SRobert Mustacchi.Fa "struct ps_prochandle *P"
33*43051d27SRobert Mustacchi.Fa "proc_lwp_all_f *func"
34*43051d27SRobert Mustacchi.Fa "void *data"
35*43051d27SRobert Mustacchi.Fc
36*43051d27SRobert Mustacchi.Sh DESCRIPTION
37*43051d27SRobert MustacchiThe
38*43051d27SRobert Mustacchi.Fn Plwp_iter
39*43051d27SRobert Mustacchiand
40*43051d27SRobert Mustacchi.Fn Plwp_iter_all
41*43051d27SRobert Mustacchifunctions iterates over threads in the given process handle
42*43051d27SRobert Mustacchi.Fa P .
43*43051d27SRobert MustacchiThe
44*43051d27SRobert Mustacchi.Fn Plwp_iter
45*43051d27SRobert Mustacchifunction iterates over all active threads, where as the
46*43051d27SRobert Mustacchi.Fn Plwp_iter_all
47*43051d27SRobert Mustacchifunction iterates over both active threads and zombie threads -- threads
48*43051d27SRobert Mustacchiwaiting to be reaped.
49*43051d27SRobert Mustacchi.Pp
50*43051d27SRobert MustacchiFor each thread, the callback function
51*43051d27SRobert Mustacchi.Fa func
52*43051d27SRobert Mustacchiis called with the pointer to the private data argument,
53*43051d27SRobert Mustacchi.Fa data ,
54*43051d27SRobert Mustacchiand the thread's
55*43051d27SRobert Mustacchi.Sy lwpstatus_t
56*43051d27SRobert Mustacchistructure. In the case of the
57*43051d27SRobert Mustacchi.Fn Plwp_iter_all
58*43051d27SRobert Mustacchifunction, the thread's
59*43051d27SRobert Mustacchi.Sy lwpsinfo_t
60*43051d27SRobert Mustacchiis also included.
61*43051d27SRobert Mustacchi.Pp
62*43051d27SRobert MustacchiThe return value of
63*43051d27SRobert Mustacchi.Fa func
64*43051d27SRobert Mustacchicontrols whether or not iteration continues. If
65*43051d27SRobert Mustacchi.Fa func
66*43051d27SRobert Mustacchireturns
67*43051d27SRobert Mustacchi.Sy 0 ,
68*43051d27SRobert Mustacchithen both functions will continue iteration. However, if
69*43051d27SRobert Mustacchi.Fa func
70*43051d27SRobert Mustacchireturns non-zero, then iteration will halt and that value will be used
71*43051d27SRobert Mustacchias the return value of the
72*43051d27SRobert Mustacchi.Fn Plwp_iter
73*43051d27SRobert Mustacchiand
74*43051d27SRobert Mustacchi.Fn Plwp_iter_all
75*43051d27SRobert Mustacchifunctions. Because both functions return
76*43051d27SRobert Mustacchi.Sy -1
77*43051d27SRobert Mustacchion internal failure, it is recommended that the callback function does
78*43051d27SRobert Mustacchinot return
79*43051d27SRobert Mustacchi.Sy -1
80*43051d27SRobert Mustacchito indicate an error so that the caller may distinguish between the
81*43051d27SRobert Mustacchifailure of the callback function and the failure of the
82*43051d27SRobert Mustacchi.Fn Plwp_iter
83*43051d27SRobert Mustacchiand
84*43051d27SRobert Mustacchi.Fn Plwp_iter_all
85*43051d27SRobert Mustacchifunctions.
86*43051d27SRobert Mustacchi.Sh RETURN VALUES
87*43051d27SRobert MustacchiUpon successful completion, the
88*43051d27SRobert Mustacchi.Fn Plwp_iter
89*43051d27SRobert Mustacchiand
90*43051d27SRobert Mustacchi.Fn Plwp_iter_all
91*43051d27SRobert Mustacchifunctions return
92*43051d27SRobert Mustacchi.Sy 0 .
93*43051d27SRobert MustacchiOtherwise, if there was an internal error or there is no thread data, then
94*43051d27SRobert Mustacchi.Sy -1
95*43051d27SRobert Mustacchiis returned. Otherwise, if the callback function
96*43051d27SRobert Mustacchi.Fa func
97*43051d27SRobert Mustacchireturns non-zero, then its return value will be returned instead.
98*43051d27SRobert Mustacchi.Sh INTERFACE STABILITY
99*43051d27SRobert Mustacchi.Sy Uncommitted
100*43051d27SRobert Mustacchi.Sh MT-LEVEL
101*43051d27SRobert MustacchiSee
102*43051d27SRobert Mustacchi.Sy LOCKING
103*43051d27SRobert Mustacchiin
104*43051d27SRobert Mustacchi.Xr libproc 3LIB .
105*43051d27SRobert Mustacchi.Sh SEE ALSO
106*43051d27SRobert Mustacchi.Xr libproc 3LIB
107