143051d27SRobert Mustacchi.\" 243051d27SRobert Mustacchi.\" This file and its contents are supplied under the terms of the 343051d27SRobert Mustacchi.\" Common Development and Distribution License ("CDDL"), version 1.0. 443051d27SRobert Mustacchi.\" You may only use this file in accordance with the terms of version 543051d27SRobert Mustacchi.\" 1.0 of the CDDL. 643051d27SRobert Mustacchi.\" 743051d27SRobert Mustacchi.\" A full copy of the text of the CDDL should have accompanied this 843051d27SRobert Mustacchi.\" source. A copy of the CDDL is also available via the Internet at 943051d27SRobert Mustacchi.\" http://www.illumos.org/license/CDDL. 1043051d27SRobert Mustacchi.\" 1143051d27SRobert Mustacchi.\" 1243051d27SRobert Mustacchi.\" Copyright 2015 Joyent, Inc. 1343051d27SRobert Mustacchi.\" 1443051d27SRobert Mustacchi.Dd May 11, 2016 1543051d27SRobert Mustacchi.Dt PLWP_ITER 3PROC 1643051d27SRobert Mustacchi.Os 1743051d27SRobert Mustacchi.Sh NAME 1843051d27SRobert Mustacchi.Nm Plwp_iter , 1943051d27SRobert Mustacchi.Nm Plwp_iter_all 2043051d27SRobert Mustacchi.Nd iterate over threads 21*ab618543SJohn Levon.Sh LIBRARY 2243051d27SRobert Mustacchi.Lb libproc 23*ab618543SJohn Levon.Sh SYNOPSIS 2443051d27SRobert Mustacchi.In libproc.h 2543051d27SRobert Mustacchi.Ft int 2643051d27SRobert Mustacchi.Fo Plwp_iter 2743051d27SRobert Mustacchi.Fa "struct ps_prochandle *P" 2843051d27SRobert Mustacchi.Fa "proc_lwp_f *func", 2943051d27SRobert Mustacchi.Fa "void *data" 3043051d27SRobert Mustacchi.Fc 3143051d27SRobert Mustacchi.Ft int 3243051d27SRobert Mustacchi.Fo Plwp_iter_all 3343051d27SRobert Mustacchi.Fa "struct ps_prochandle *P" 3443051d27SRobert Mustacchi.Fa "proc_lwp_all_f *func" 3543051d27SRobert Mustacchi.Fa "void *data" 3643051d27SRobert Mustacchi.Fc 3743051d27SRobert Mustacchi.Sh DESCRIPTION 3843051d27SRobert MustacchiThe 3943051d27SRobert Mustacchi.Fn Plwp_iter 4043051d27SRobert Mustacchiand 4143051d27SRobert Mustacchi.Fn Plwp_iter_all 4243051d27SRobert Mustacchifunctions iterates over threads in the given process handle 4343051d27SRobert Mustacchi.Fa P . 4443051d27SRobert MustacchiThe 4543051d27SRobert Mustacchi.Fn Plwp_iter 4643051d27SRobert Mustacchifunction iterates over all active threads, where as the 4743051d27SRobert Mustacchi.Fn Plwp_iter_all 4843051d27SRobert Mustacchifunction iterates over both active threads and zombie threads -- threads 4943051d27SRobert Mustacchiwaiting to be reaped. 5043051d27SRobert Mustacchi.Pp 5143051d27SRobert MustacchiFor each thread, the callback function 5243051d27SRobert Mustacchi.Fa func 5343051d27SRobert Mustacchiis called with the pointer to the private data argument, 5443051d27SRobert Mustacchi.Fa data , 5543051d27SRobert Mustacchiand the thread's 5643051d27SRobert Mustacchi.Sy lwpstatus_t 5772d3dbb9SYuri Pankovstructure. 5872d3dbb9SYuri PankovIn the case of the 5943051d27SRobert Mustacchi.Fn Plwp_iter_all 6043051d27SRobert Mustacchifunction, the thread's 6143051d27SRobert Mustacchi.Sy lwpsinfo_t 6243051d27SRobert Mustacchiis also included. 6343051d27SRobert Mustacchi.Pp 6443051d27SRobert MustacchiThe return value of 6543051d27SRobert Mustacchi.Fa func 6672d3dbb9SYuri Pankovcontrols whether or not iteration continues. 6772d3dbb9SYuri PankovIf 6843051d27SRobert Mustacchi.Fa func 6943051d27SRobert Mustacchireturns 7043051d27SRobert Mustacchi.Sy 0 , 7172d3dbb9SYuri Pankovthen both functions will continue iteration. 7272d3dbb9SYuri PankovHowever, if 7343051d27SRobert Mustacchi.Fa func 7443051d27SRobert Mustacchireturns non-zero, then iteration will halt and that value will be used 7543051d27SRobert Mustacchias the return value of the 7643051d27SRobert Mustacchi.Fn Plwp_iter 7743051d27SRobert Mustacchiand 7843051d27SRobert Mustacchi.Fn Plwp_iter_all 7972d3dbb9SYuri Pankovfunctions. 8072d3dbb9SYuri PankovBecause both functions return 8143051d27SRobert Mustacchi.Sy -1 8243051d27SRobert Mustacchion internal failure, it is recommended that the callback function does 8343051d27SRobert Mustacchinot return 8443051d27SRobert Mustacchi.Sy -1 8543051d27SRobert Mustacchito indicate an error so that the caller may distinguish between the 8643051d27SRobert Mustacchifailure of the callback function and the failure of the 8743051d27SRobert Mustacchi.Fn Plwp_iter 8843051d27SRobert Mustacchiand 8943051d27SRobert Mustacchi.Fn Plwp_iter_all 9043051d27SRobert Mustacchifunctions. 9143051d27SRobert Mustacchi.Sh RETURN VALUES 9243051d27SRobert MustacchiUpon successful completion, the 9343051d27SRobert Mustacchi.Fn Plwp_iter 9443051d27SRobert Mustacchiand 9543051d27SRobert Mustacchi.Fn Plwp_iter_all 9643051d27SRobert Mustacchifunctions return 9743051d27SRobert Mustacchi.Sy 0 . 9843051d27SRobert MustacchiOtherwise, if there was an internal error or there is no thread data, then 9943051d27SRobert Mustacchi.Sy -1 10072d3dbb9SYuri Pankovis returned. 10172d3dbb9SYuri PankovOtherwise, if the callback function 10243051d27SRobert Mustacchi.Fa func 10343051d27SRobert Mustacchireturns non-zero, then its return value will be returned instead. 10443051d27SRobert Mustacchi.Sh INTERFACE STABILITY 10543051d27SRobert Mustacchi.Sy Uncommitted 10643051d27SRobert Mustacchi.Sh MT-LEVEL 10743051d27SRobert MustacchiSee 10843051d27SRobert Mustacchi.Sy LOCKING 10943051d27SRobert Mustacchiin 11043051d27SRobert Mustacchi.Xr libproc 3LIB . 11143051d27SRobert Mustacchi.Sh SEE ALSO 11243051d27SRobert Mustacchi.Xr libproc 3LIB 113