xref: /illumos-gate/usr/src/man/man3proc/Plwp_getregs.3proc (revision ed093b41a93e8563e6e1e5dae0768dda2a7bcc27)
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.
13*ed093b41SRobert Mustacchi.\" Copyright 2023 Oxide Computer Company
1443051d27SRobert Mustacchi.\"
15*ed093b41SRobert Mustacchi.Dd January 19, 2023
1643051d27SRobert Mustacchi.Dt PLWP_GETREGS 3PROC
1743051d27SRobert Mustacchi.Os
1843051d27SRobert Mustacchi.Sh NAME
1943051d27SRobert Mustacchi.Nm Plwp_getfpregs ,
2043051d27SRobert Mustacchi.Nm Plwp_setfpregs ,
2143051d27SRobert Mustacchi.Nm Plwp_getregs ,
22*ed093b41SRobert Mustacchi.Nm Plwp_setregs ,
23*ed093b41SRobert Mustacchi.Nm Lgetfpregs ,
24*ed093b41SRobert Mustacchi.Nm Lsetfpregs ,
25*ed093b41SRobert Mustacchi.Nm Lgetregs ,
26*ed093b41SRobert Mustacchi.Nm Lsetregs
2743051d27SRobert Mustacchi.Nd get and set thread registers
28ab618543SJohn Levon.Sh LIBRARY
2943051d27SRobert Mustacchi.Lb libproc
30ab618543SJohn Levon.Sh SYNOPSIS
3143051d27SRobert Mustacchi.In libproc.h
3243051d27SRobert Mustacchi.Ft int
3343051d27SRobert Mustacchi.Fo Plwp_getfpregs
3443051d27SRobert Mustacchi.Fa "struct ps_prochandle *P"
3543051d27SRobert Mustacchi.Fa "lwpid_t lwpid"
3643051d27SRobert Mustacchi.Fa "prfpregset_t *fpregs"
3743051d27SRobert Mustacchi.Fc
3843051d27SRobert Mustacchi.Ft int
3943051d27SRobert Mustacchi.Fo Plwp_setfpregs
4043051d27SRobert Mustacchi.Fa "struct ps_prochandle *P"
4143051d27SRobert Mustacchi.Fa "lwpid_t lwpid"
4243051d27SRobert Mustacchi.Fa "const prfpregset_t fpregs"
4343051d27SRobert Mustacchi.Fc
4443051d27SRobert Mustacchi.Ft int
4543051d27SRobert Mustacchi.Fo Plwp_getregs
4643051d27SRobert Mustacchi.Fa "struct ps_prochandle *P"
4743051d27SRobert Mustacchi.Fa "lwpid_t lwpid"
48282d4a2dSRobert Mustacchi.Fa "prgregset_t gregs"
4943051d27SRobert Mustacchi.Fc
5043051d27SRobert Mustacchi.Ft int
5143051d27SRobert Mustacchi.Fo Plwp_setregs
5243051d27SRobert Mustacchi.Fa "struct ps_prochandle *P"
5343051d27SRobert Mustacchi.Fa "lwpid_t lwpid"
54282d4a2dSRobert Mustacchi.Fa "const prgregset_t gregs"
5543051d27SRobert Mustacchi.Fc
56*ed093b41SRobert Mustacchi.Ft int
57*ed093b41SRobert Mustacchi.Fo Lgetfpregs
58*ed093b41SRobert Mustacchi.Fa "struct ps_lwphandle *L"
59*ed093b41SRobert Mustacchi.Fa "prfpregset_t *fpregs"
60*ed093b41SRobert Mustacchi.Fc
61*ed093b41SRobert Mustacchi.Ft int
62*ed093b41SRobert Mustacchi.Fo Lsetfpregs
63*ed093b41SRobert Mustacchi.Fa "struct ps_lwphandle *L"
64*ed093b41SRobert Mustacchi.Fa "const prfpregset_t *fpregs"
65*ed093b41SRobert Mustacchi.Fc
66*ed093b41SRobert Mustacchi.Ft int
67*ed093b41SRobert Mustacchi.Fo Lgetregs
68*ed093b41SRobert Mustacchi.Fa "struct ps_lwphandle *L"
69*ed093b41SRobert Mustacchi.Fa "prgregset_t gregs"
70*ed093b41SRobert Mustacchi.Fc
71*ed093b41SRobert Mustacchi.Ft int
72*ed093b41SRobert Mustacchi.Fo Lsetregs
73*ed093b41SRobert Mustacchi.Fa "struct ps_lwphandle *L"
74*ed093b41SRobert Mustacchi.Fa "const prgregset_t gregs"
75*ed093b41SRobert Mustacchi.Fc
7643051d27SRobert Mustacchi.Sh DESCRIPTION
7743051d27SRobert MustacchiThe
7843051d27SRobert Mustacchi.Fn Plwp_getregs ,
7943051d27SRobert Mustacchi.Fn Plwp_setregs ,
8043051d27SRobert Mustacchi.Fn Plwp_getfpregs ,
8143051d27SRobert Mustacchiand
8243051d27SRobert Mustacchi.Fn Plwp_setfpregs
8343051d27SRobert Mustacchifunctions allow one to get and set the general purpose and floating
8443051d27SRobert Mustacchipoint registers from the thread
8543051d27SRobert Mustacchi.Fa lwpid
8643051d27SRobert Mustacchiin the process handle
8743051d27SRobert Mustacchi.Fa P .
8843051d27SRobert Mustacchi.Pp
8943051d27SRobert MustacchiThe
9043051d27SRobert Mustacchi.Fn Plwp_getfpregs
9143051d27SRobert Mustacchifunction updates the structure pointed to by
9243051d27SRobert Mustacchi.Fa fpregs
9343051d27SRobert Mustacchiwith the state and values of the floating point registers of the thread
9443051d27SRobert Mustacchispecified by
9543051d27SRobert Mustacchi.Fa lwpid .
9643051d27SRobert Mustacchi.Pp
9743051d27SRobert MustacchiThe
9843051d27SRobert Mustacchi.Fn Plwp_setfpregs
9943051d27SRobert Mustacchifunction updates the floating point registers of the thread specified by
10043051d27SRobert Mustacchi.Fa lwpid
10143051d27SRobert Mustacchito the register state contained in
10243051d27SRobert Mustacchi.Fa fpregs .
10343051d27SRobert Mustacchi.Pp
10443051d27SRobert MustacchiThe
10543051d27SRobert Mustacchi.Fn Plwp_getregs
10643051d27SRobert Mustacchifunction updates the structure pointed to by
10743051d27SRobert Mustacchi.Fa gregs
10843051d27SRobert Mustacchiwith the state and values of the general purpose registers of the thread
10943051d27SRobert Mustacchispecified by
11043051d27SRobert Mustacchi.Fa lwpid.
11143051d27SRobert Mustacchi.Pp
11243051d27SRobert MustacchiThe
11343051d27SRobert Mustacchi.Fn Plwp_setregs
11443051d27SRobert Mustacchifunction updates the general purpose registers of the thread specified
11543051d27SRobert Mustacchiby
11643051d27SRobert Mustacchi.Fa lwpid
11743051d27SRobert Mustacchito the register state contained in
11843051d27SRobert Mustacchi.Fa gregs .
11943051d27SRobert Mustacchi.Pp
12043051d27SRobert MustacchiProcesses must be stopped before obtaining the register state of
12172d3dbb9SYuri Pankovindividual threads.
12272d3dbb9SYuri PankovProcesses may be stopped with
12343051d27SRobert Mustacchi.Xr Pstop 3PROC .
12443051d27SRobert MustacchiThe structures used for registers are described in
125bbf21555SRichard Lowe.Xr proc 5
126282d4a2dSRobert Mustacchiand their definitions may be found in
127282d4a2dSRobert Mustacchi.In procfs.h .
12843051d27SRobert MustacchiThe definitions of these structures varies based on the architecture of
12943051d27SRobert Mustacchithe system and the running process.
13043051d27SRobert Mustacchi.Pp
13143051d27SRobert MustacchiOne may not set the register values of a process that is not an active
13243051d27SRobert Mustacchiprocess, e.g. a process handle that refers to a file or a core file.
133*ed093b41SRobert Mustacchi.Pp
134*ed093b41SRobert MustacchiThe
135*ed093b41SRobert Mustacchi.Fn Lgetfpregs ,
136*ed093b41SRobert Mustacchi.Fn Lsetfpregs ,
137*ed093b41SRobert Mustacchi.Fn Lgetregs ,
138*ed093b41SRobert Mustacchiand
139*ed093b41SRobert Mustacchi.Fn Lsetregs
140*ed093b41SRobert Mustacchifunctions behave in a same way as the corresponding process-handle
141*ed093b41SRobert Mustacchispecific functions, with the following differences:
142*ed093b41SRobert Mustacchi.Bl -dash
143*ed093b41SRobert Mustacchi.It
144*ed093b41SRobert MustacchiRather than take a specified thread id via
145*ed093b41SRobert Mustacchi.Fa lwpid ,
146*ed093b41SRobert Mustacchithey operate on the thread that the thread-handle,
147*ed093b41SRobert Mustacchi.Fa L ,
148*ed093b41SRobert Mustacchirefers to.
149*ed093b41SRobert Mustacchi.It
150*ed093b41SRobert MustacchiThe process-handle functions will require that the entire process is
151*ed093b41SRobert Mustacchistopped before performing a set operation.
152*ed093b41SRobert MustacchiIn these cases, only the specific thread identified by the handle
153*ed093b41SRobert Mustacchi.Fa L
154*ed093b41SRobert Mustacchimust be stopped through a call to
155*ed093b41SRobert Mustacchi.Xr Lstop 3PROC
156*ed093b41SRobert Mustacchior similar.
157*ed093b41SRobert MustacchiNote, a suspended thread
158*ed093b41SRobert Mustacchi.Po
159*ed093b41SRobert Mustacchi.Xr thr_suspend 3C
160*ed093b41SRobert Mustacchi.Pc
161*ed093b41SRobert Mustacchiis not considered stopped for these purposes.
162*ed093b41SRobert Mustacchi.El
16343051d27SRobert Mustacchi.Sh RETURN VALUES
16443051d27SRobert MustacchiUpon successful completion, the
16543051d27SRobert Mustacchi.Fn Plwp_getregs ,
16643051d27SRobert Mustacchi.Fn Plwp_setregs ,
16743051d27SRobert Mustacchi.Fn Plwp_getfpregs ,
168*ed093b41SRobert Mustacchi.Fn Plwp_setfpregs ,
169*ed093b41SRobert Mustacchi.Fn Lgetfpregs ,
170*ed093b41SRobert Mustacchi.Fn Lsetfpregs ,
171*ed093b41SRobert Mustacchi.Fn Lgetregs ,
17243051d27SRobert Mustacchiand
173*ed093b41SRobert Mustacchi.Fn Lsetregs
17443051d27SRobert Mustacchifunctions return
17543051d27SRobert Mustacchi.Sy 0
17672d3dbb9SYuri Pankovand obtain or set the register state.
17772d3dbb9SYuri PankovOtherwise,
17843051d27SRobert Mustacchi.Sy -1
17943051d27SRobert Mustacchiis returned,
180*ed093b41SRobert Mustacchi.Va errno
18143051d27SRobert Mustacchiis set to indicate the error, and the register state is not updated nor
18243051d27SRobert Mustacchiare the data pointers changed.
18343051d27SRobert Mustacchi.Sh ERRORS
184*ed093b41SRobert MustacchiThe implementations of these functions may use standard system and
185*ed093b41SRobert Mustacchilibrary calls that can fail.
18643051d27SRobert MustacchiFor a full list of possible errors also see the
18743051d27SRobert Mustacchi.Sy DIAGNOSTICS
18843051d27SRobert Mustacchisection in
189bbf21555SRichard Lowe.Xr proc 5 .
19043051d27SRobert Mustacchi.Pp
19143051d27SRobert MustacchiThe
19243051d27SRobert Mustacchi.Fn Plwp_getregs ,
19343051d27SRobert Mustacchi.Fn Plwp_setregs ,
19443051d27SRobert Mustacchi.Fn Plwp_getfpregs ,
19543051d27SRobert Mustacchiand
19643051d27SRobert Mustacchi.Fn Plwp_setfpregs
19743051d27SRobert Mustacchiwill fail if:
19843051d27SRobert Mustacchi.Bl -tag -width Er
19943051d27SRobert Mustacchi.It Er EBUSY
20043051d27SRobert MustacchiThe process handle
20143051d27SRobert Mustacchi.Fa P
20243051d27SRobert Mustacchiis not currently stopped.
20343051d27SRobert Mustacchi.It Er ENOENT
20443051d27SRobert MustacchiThere is no thread in
20543051d27SRobert Mustacchi.Fa P
20643051d27SRobert Mustacchiwith id
20743051d27SRobert Mustacchi.Fa lwpid .
20843051d27SRobert Mustacchi.El
209*ed093b41SRobert MustacchiThe
210*ed093b41SRobert Mustacchi.Fn Lgetfpregs ,
211*ed093b41SRobert Mustacchi.Fn Lsetfpregs ,
212*ed093b41SRobert Mustacchi.Fn Lgetregs ,
213*ed093b41SRobert Mustacchiand
214*ed093b41SRobert Mustacchi.Fn Lsetregs
215*ed093b41SRobert Mustacchiwill fail if:
216*ed093b41SRobert Mustacchi.Bl -tag -width Er
217*ed093b41SRobert Mustacchi.It Er EBUSY
218*ed093b41SRobert MustacchiThe thread handle
219*ed093b41SRobert Mustacchi.Fa L
220*ed093b41SRobert Mustacchiis not currently stopped.
221*ed093b41SRobert Mustacchi.El
22243051d27SRobert Mustacchi.Sh INTERFACE STABILITY
22343051d27SRobert Mustacchi.Sy Uncommitted
22443051d27SRobert Mustacchi.Sh MT-LEVEL
22543051d27SRobert MustacchiSee
22643051d27SRobert Mustacchi.Sy LOCKING
22743051d27SRobert Mustacchiin
22843051d27SRobert Mustacchi.Xr libproc 3LIB .
22943051d27SRobert Mustacchi.Sh SEE ALSO
23043051d27SRobert Mustacchi.Xr libproc 3LIB ,
231bbf21555SRichard Lowe.Xr proc 5
232