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_STACK 3PROC
1643051d27SRobert Mustacchi.Os
1743051d27SRobert Mustacchi.Sh NAME
1843051d27SRobert Mustacchi.Nm Plwp_stack ,
1943051d27SRobert Mustacchi.Nm Plwp_alt_stack ,
2043051d27SRobert Mustacchi.Nm Plwp_main_stack ,
2143051d27SRobert Mustacchi.Nm Lstack ,
2243051d27SRobert Mustacchi.Nm Lalt_stack ,
2343051d27SRobert Mustacchi.Nm Lmain_stack
2443051d27SRobert Mustacchi.Nd get thread stack information
25ab618543SJohn Levon.Sh LIBRARY
2643051d27SRobert Mustacchi.Lb libproc
27ab618543SJohn Levon.Sh SYNOPSIS
2843051d27SRobert Mustacchi.In libproc.h
2943051d27SRobert Mustacchi.Ft int
3043051d27SRobert Mustacchi.Fo Plwp_stack
3143051d27SRobert Mustacchi.Fa "struct ps_prochandle *P"
3243051d27SRobert Mustacchi.Fa "lwpid_t lwpid"
3343051d27SRobert Mustacchi.Fa "stack_t *stkp"
3443051d27SRobert Mustacchi.Fc
3543051d27SRobert Mustacchi.Ft int
3643051d27SRobert Mustacchi.Fo Plwp_alt_stack
3743051d27SRobert Mustacchi.Fa "struct ps_prochandle *P"
3843051d27SRobert Mustacchi.Fa "lwpid_t lwpid"
3943051d27SRobert Mustacchi.Fa "stack_t *stkp"
4043051d27SRobert Mustacchi.Fc
4143051d27SRobert Mustacchi.Ft int
4243051d27SRobert Mustacchi.Fo Plwp_main_stack
4343051d27SRobert Mustacchi.Fa "struct ps_prochandle *P"
4443051d27SRobert Mustacchi.Fa "lwpid_t lwpid"
4543051d27SRobert Mustacchi.Fa "stack_t *stkp"
4643051d27SRobert Mustacchi.Fc
4743051d27SRobert Mustacchi.Ft int
4843051d27SRobert Mustacchi.Fo Lalt_stack
4943051d27SRobert Mustacchi.Fa "struct ps_lwphandle *L"
5043051d27SRobert Mustacchi.Fa "stack_t *stkp"
5143051d27SRobert Mustacchi.Fc
5243051d27SRobert Mustacchi.Ft int
5343051d27SRobert Mustacchi.Fo Lmain_stack
5443051d27SRobert Mustacchi.Fa "struct ps_lwphandle *L"
5543051d27SRobert Mustacchi.Fa "stack_t *stkp"
5643051d27SRobert Mustacchi.Fc
5743051d27SRobert Mustacchi.Ft int
5843051d27SRobert Mustacchi.Fo Lstack
5943051d27SRobert Mustacchi.Fa "struct ps_lwphandle *L"
6043051d27SRobert Mustacchi.Fa "stack_t *stkp"
6143051d27SRobert Mustacchi.Fc
6243051d27SRobert Mustacchi.Sh DESCRIPTION
6343051d27SRobert MustacchiThe
6443051d27SRobert Mustacchi.Fn Plwp_stack ,
6543051d27SRobert Mustacchi.Fn Plwp_alt_stack ,
6643051d27SRobert Mustacchiand
6743051d27SRobert Mustacchi.Fn Plwp_main_stack
6843051d27SRobert Mustacchifunctions obtain information about the size and address of the stacks
6943051d27SRobert Mustacchifor the thread identified by
7043051d27SRobert Mustacchi.Fa lwpid
7143051d27SRobert Mustacchiin the process handle
7243051d27SRobert Mustacchi.Fa P .
7343051d27SRobert Mustacchi.Pp
7443051d27SRobert MustacchiEach thread in a process has its own stack which is used both for
7543051d27SRobert Mustacchimaintaining function call sequences and the storing of local variables.
7643051d27SRobert MustacchiA thread may also configure a different stack to handle specific
7772d3dbb9SYuri Pankovsignals.
7872d3dbb9SYuri PankovThis stack is often called the
7943051d27SRobert Mustacchi.Em alternate stack .
8043051d27SRobert MustacchiWhether or not the alternate stack is used may be controlled through the
8143051d27SRobert Mustacchi.Xr sigaction 2
8243051d27SRobert Mustacchiand
8343051d27SRobert Mustacchi.Xr sigaltstack 2
8443051d27SRobert Mustacchifunctions .
8543051d27SRobert Mustacchi.Pp
8643051d27SRobert MustacchiThe
8743051d27SRobert Mustacchi.Fn Plwp_stack
8843051d27SRobert Mustacchifunction fills in
8943051d27SRobert Mustacchi.Fa stkp
9043051d27SRobert Mustacchiwith the information about the thread's currently executing stack,
9143051d27SRobert Mustacchiwhether the alternate or main one.
9243051d27SRobert Mustacchi.Pp
9343051d27SRobert MustacchiThe
9443051d27SRobert Mustacchi.Fn Plwp_alt_stack
9543051d27SRobert Mustacchifunction fills in
9643051d27SRobert Mustacchi.Fa stkp
9743051d27SRobert Mustacchiwith the information about the thread's alternate stack, if it's
9843051d27SRobert Mustacchiconfigured.
9943051d27SRobert Mustacchi.Pp
10043051d27SRobert MustacchiThe
10143051d27SRobert Mustacchi.Fn Plwp_main_stack
10243051d27SRobert Mustacchifunction fills in
10343051d27SRobert Mustacchi.Fa stkp
10443051d27SRobert Mustacchiwith the information about the thread's main stack, regardless of if there
10543051d27SRobert Mustacchiis an alternate stack or it is executing one.
10643051d27SRobert Mustacchi.Pp
10743051d27SRobert MustacchiProcess handles that refer to files, obtained through
10843051d27SRobert Mustacchi.Xr Pgrab_file 3PROC ,
10943051d27SRobert Mustacchido not have any stack information and these functions will always fail
11043051d27SRobert Mustacchion them.
11143051d27SRobert Mustacchi.Pp
11243051d27SRobert MustacchiThe
11343051d27SRobert Mustacchi.Fn Lalt_stack ,
11443051d27SRobert Mustacchi.Fn Lmain_stack ,
11543051d27SRobert Mustacchiand
11643051d27SRobert Mustacchi.Fn Lstack
11743051d27SRobert Mustacchifunctions are identical to the
11843051d27SRobert Mustacchi.Fn Plwp_alt_stack ,
11943051d27SRobert Mustacchi.Fn Plwp_main_stack ,
12043051d27SRobert Mustacchiand
12143051d27SRobert Mustacchi.Fn Plwp_main_stack
12243051d27SRobert Mustacchifunctions, except rather than specifying a thread to operate on, they
12343051d27SRobert Mustacchioperate on the thread handle
12443051d27SRobert Mustacchi.Fa L ,
12543051d27SRobert Mustacchiwhich specifies the thread to operate on.
12643051d27SRobert Mustacchi.Sh RETURN VALUES
12743051d27SRobert MustacchiUpon successful completion, the
12843051d27SRobert Mustacchi.Fn Plwp_stack ,
12943051d27SRobert Mustacchi.Fn Plwp_alt_stack ,
13043051d27SRobert Mustacchi.Fn Plwp_main_stack ,
13143051d27SRobert Mustacchi.Fn Lalt_stack ,
13243051d27SRobert Mustacchi.Fn Lmain_stack ,
13343051d27SRobert Mustacchiand
13443051d27SRobert Mustacchi.Fn Lstack
13543051d27SRobert Mustacchifunctions return
13643051d27SRobert Mustacchi.Sy 0
13743051d27SRobert Mustacchiand fills in
13843051d27SRobert Mustacchi.Fa stkp
13972d3dbb9SYuri Pankovwith information about the appropriate stack.
14072d3dbb9SYuri PankovOtherwise,
14143051d27SRobert Mustacchi.Sy -1
14243051d27SRobert Mustacchiis returned,
14343051d27SRobert Mustacchi.Sy errno
14443051d27SRobert Mustacchiis updated with the error, and
14543051d27SRobert Mustacchi.Fa stkp
14643051d27SRobert Mustacchiis not modified.
14743051d27SRobert Mustacchi.Sh ERRORS
14843051d27SRobert MustacchiFor a full list of possible errors also see the
14943051d27SRobert Mustacchi.Sy DIAGNOSTICS
15043051d27SRobert Mustacchisection in
151*bbf21555SRichard Lowe.Xr proc 5 .
15243051d27SRobert Mustacchi.Pp
15343051d27SRobert MustacchiThe
15443051d27SRobert Mustacchi.Fn Plwp_stack ,
15543051d27SRobert Mustacchi.Fn Plwp_alt_stack ,
15643051d27SRobert Mustacchiand
15743051d27SRobert Mustacchi.Fn Plwp_main_stack
15843051d27SRobert Mustacchifunction will fail if:
15943051d27SRobert Mustacchi.Bl -tag -width Er
16043051d27SRobert Mustacchi.It Er ENODATA
16143051d27SRobert MustacchiThe process handle
16243051d27SRobert Mustacchi.Fa P
16343051d27SRobert Mustacchirefers to a grabbed file, not an active process or core.
16443051d27SRobert Mustacchi.It Er EINVAL
16543051d27SRobert MustacchiThe process handle
16643051d27SRobert Mustacchi.Fa P
16743051d27SRobert Mustacchirefers to a core file and the specified thread does not exist.
16843051d27SRobert Mustacchi.It Er ENOENT
16943051d27SRobert MustacchiThe process handle
17043051d27SRobert Mustacchi.Fa P
17143051d27SRobert Mustacchirefers to an active process and the specified thread does not exist.
17243051d27SRobert Mustacchi.El
17343051d27SRobert Mustacchi.Pp
17443051d27SRobert MustacchiThe
17543051d27SRobert Mustacchi.Fn Plwp_alt_stack
17643051d27SRobert Mustacchiand
17743051d27SRobert Mustacchi.Fn Lalt_stack
17843051d27SRobert Mustacchifunctions will fail if:
17943051d27SRobert Mustacchi.Bl -tag -width Er
18043051d27SRobert Mustacchi.It Er ENODATA
18143051d27SRobert MustacchiThe thread identified by
18243051d27SRobert Mustacchi.Fa lwpid
18343051d27SRobert Mustacchidid not have an alternate stack enabled.
18443051d27SRobert Mustacchi.El
18543051d27SRobert Mustacchi.Sh INTERFACE STABILITY
18643051d27SRobert Mustacchi.Sy Uncommitted
18743051d27SRobert Mustacchi.Sh MT-LEVEL
18843051d27SRobert MustacchiSee
18943051d27SRobert Mustacchi.Sy LOCKING
19043051d27SRobert Mustacchiin
19143051d27SRobert Mustacchi.Xr libproc 3LIB .
19243051d27SRobert Mustacchi.Sh SEE ALSO
19343051d27SRobert Mustacchi.Xr sigaction 2 ,
19443051d27SRobert Mustacchi.Xr sigaltstack 2 ,
19543051d27SRobert Mustacchi.Xr libproc 3LIB ,
196*bbf21555SRichard Lowe.Xr proc 5
197