xref: /illumos-gate/usr/src/man/man3c_db/td_thr_getgregs.3c_db (revision ed093b41a93e8563e6e1e5dae0768dda2a7bcc27)
1*ed093b41SRobert Mustacchi.\"
2c10c16deSRichard Lowe.\"  Copyright (c) 1998 Sun Microsystems, Inc.  All Rights Reserved
3c10c16deSRichard Lowe.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License").  You may not use this file except in compliance with the License.
4c10c16deSRichard Lowe.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.  See the License for the specific language governing permissions and limitations under the License.
5c10c16deSRichard Lowe.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE.  If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
6*ed093b41SRobert Mustacchi.\" Copyright 2023 Oxide Computer Company
7*ed093b41SRobert Mustacchi.Dd January 23, 2023
8*ed093b41SRobert Mustacchi.Dt TD_THR_GETGREGS 3C_DB
9*ed093b41SRobert Mustacchi.Os
10*ed093b41SRobert Mustacchi.Sh NAME
11*ed093b41SRobert Mustacchi.Nm td_thr_getgregs ,
12*ed093b41SRobert Mustacchi.Nm td_thr_setgregs ,
13*ed093b41SRobert Mustacchi.Nm td_thr_getfpregs ,
14*ed093b41SRobert Mustacchi.Nm td_thr_setfpregs ,
15*ed093b41SRobert Mustacchi.Nm td_thr_getxregsize ,
16*ed093b41SRobert Mustacchi.Nm td_thr_getxregs ,
17*ed093b41SRobert Mustacchi.Nm td_thr_setxregs
18*ed093b41SRobert Mustacchi.Nd reading and writing thread registers in libc_db
19*ed093b41SRobert Mustacchi.Sh LIBRARY
20*ed093b41SRobert Mustacchi.Lb libc_db
21*ed093b41SRobert Mustacchi.Sh SYNOPSIS
22*ed093b41SRobert Mustacchi.In proc_service.h
23*ed093b41SRobert Mustacchi.In thread_db.h
24*ed093b41SRobert Mustacchi.Ft td_err_e
25*ed093b41SRobert Mustacchi.Fo td_thr_getgregs
26*ed093b41SRobert Mustacchi.Fa "const td_thrhandle_t *th_p"
27*ed093b41SRobert Mustacchi.Fa "prgregset_t gregset"
28*ed093b41SRobert Mustacchi.Fc
29*ed093b41SRobert Mustacchi.Ft td_err_e
30*ed093b41SRobert Mustacchi.Fo td_thr_setgregs
31*ed093b41SRobert Mustacchi.Fa "const td_thrhandle_t *th_p"
32*ed093b41SRobert Mustacchi.Fa "prgregset_t gregset"
33*ed093b41SRobert Mustacchi.Fc
34*ed093b41SRobert Mustacchi.Ft td_err_e
35*ed093b41SRobert Mustacchi.Fo td_thr_getfpregs
36*ed093b41SRobert Mustacchi.Fa "const td_thrhandle_t *th_p"
37*ed093b41SRobert Mustacchi.Fa "prfpregset_t *fpregset"
38*ed093b41SRobert Mustacchi.Fc
39*ed093b41SRobert Mustacchi.Ft td_err_e
40*ed093b41SRobert Mustacchi.Fo td_thr_setfpregs
41*ed093b41SRobert Mustacchi.Fa "const td_thrhandle_t *th_p"
42*ed093b41SRobert Mustacchi.Fa "prfpregset_t *fpregset"
43*ed093b41SRobert Mustacchi.Fc
44*ed093b41SRobert Mustacchi.Ft td_err_e
45*ed093b41SRobert Mustacchi.Fo td_thr_getxregsize
46*ed093b41SRobert Mustacchi.Fa "const td_thrhandle_t *th_p"
47*ed093b41SRobert Mustacchi.Fa "int *xregsize"
48*ed093b41SRobert Mustacchi.Fc
49*ed093b41SRobert Mustacchi.Ft td_err_e
50*ed093b41SRobert Mustacchi.Fo td_thr_getxregs
51*ed093b41SRobert Mustacchi.Fa "const td_thrhandle_t *th_p"
52*ed093b41SRobert Mustacchi.Fa "prxregset_t *xregset"
53*ed093b41SRobert Mustacchi.Fc
54*ed093b41SRobert Mustacchi.Ft td_err_e
55*ed093b41SRobert Mustacchi.Fo td_thr_setxregs
56*ed093b41SRobert Mustacchi.Fa "const td_thrhandle_t *th_p"
57*ed093b41SRobert Mustacchi.Fa "prxregset_t *xregset"
58*ed093b41SRobert Mustacchi.Fc
59*ed093b41SRobert Mustacchi.Sh DESCRIPTION
60c10c16deSRichard LoweThese functions read and write the register sets associated with thread
61*ed093b41SRobert Mustacchi.Fa th_p .
62*ed093b41SRobert MustacchiThe
63*ed093b41SRobert Mustacchi.Fn td_thr_getgregs
64*ed093b41SRobert Mustacchiand
65*ed093b41SRobert Mustacchi.Fn td_thr_setgregs
66*ed093b41SRobert Mustacchifunctions get and set, respectively, the general registers of thread
67*ed093b41SRobert Mustacchi.Fa th_p .
68*ed093b41SRobert MustacchiThe
69*ed093b41SRobert Mustacchi.Fn td_thr_getfpregs
70*ed093b41SRobert Mustacchiand
71*ed093b41SRobert Mustacchi.Fn td_thr_setfpregs
72*ed093b41SRobert Mustacchifunctions get and set, respectively, the thread's floating point register set.
73*ed093b41SRobert Mustacchi.Pp
74*ed093b41SRobert MustacchiThe
75*ed093b41SRobert Mustacchi.Fn td_thr_getxregsize
76*ed093b41SRobert Mustacchifunction returns in
77*ed093b41SRobert Mustacchi.Fa *xregsize
78*ed093b41SRobert Mustacchithe size of the
79*ed093b41SRobert Mustacchiarchitecture-dependent extra state registers.
80*ed093b41SRobert MustacchiThe
81*ed093b41SRobert Mustacchi.Fn td_thr_getxregs
82*ed093b41SRobert Mustacchiand
83*ed093b41SRobert Mustacchi.Fn td_thr_setxregs
84*ed093b41SRobert Mustacchifunctions get and set, respectively, those extra state registers.
85*ed093b41SRobert MustacchiThe buffer passed to
86*ed093b41SRobert Mustacchi.Fn td_thr_getxregs
87*ed093b41SRobert Mustacchimust be at least the size indicated by
88*ed093b41SRobert Mustacchi.Fn td_thr_getxregsize .
89*ed093b41SRobert MustacchiThis size must not be assumed and may change between processes.
90*ed093b41SRobert MustacchiFailure to do so, will result in the system overwriting memory.
91*ed093b41SRobert MustacchiNot all platforms implement extended registers.
92*ed093b41SRobert MustacchiWhen they are not implemented, these functions return
93*ed093b41SRobert Mustacchi.Dv TD_NOXREGS .
94*ed093b41SRobert Mustacchi.Sh RETURN VALUES
95*ed093b41SRobert MustacchiThe
96*ed093b41SRobert Mustacchi.Fn td_thr_getgregs ,
97*ed093b41SRobert Mustacchi.Fn td_thr_setgregs ,
98*ed093b41SRobert Mustacchi.Fn td_thr_getfpregs ,
99*ed093b41SRobert Mustacchi.Fn td_thr_setfpregs ,
100*ed093b41SRobert Mustacchi.Fn td_thr_getxregsize ,
101*ed093b41SRobert Mustacchi.Fn td_thr_getxregs ,
102*ed093b41SRobert Mustacchiand
103*ed093b41SRobert Mustacchi.Fn td_thr_setxregs
104*ed093b41SRobert Mustacchifunctions return one of the following values:
105*ed093b41SRobert Mustacchi.Bl -tag -width Ds
106*ed093b41SRobert Mustacchi.It Dv TD_OK
107c10c16deSRichard LoweThe call completed successfully.
108*ed093b41SRobert Mustacchi.It Dv TD_BADTH
109c10c16deSRichard LoweAn invalid thread handle was passed in.
110*ed093b41SRobert Mustacchi.It Dv TD_DBERR
111c10c16deSRichard LoweA call to one of the imported interface routines failed.
112*ed093b41SRobert Mustacchi.It Dv TD_NOFPREGS
113*ed093b41SRobert MustacchiFloating point registers could not be read or written because the architecture
114c10c16deSRichard Lowedoes not have such registers.
115*ed093b41SRobert Mustacchi.It Dv TD_NOXREGS
116c10c16deSRichard LoweArchitecture-dependent extra state registers could not be read or written,
117*ed093b41SRobert Mustacchibecause the architecture does not have such registers.
118*ed093b41SRobert Mustacchi.It Dv TD_ERR
119*ed093b41SRobert MustacchiA
120*ed093b41SRobert Mustacchi.Sy libc_db
121*ed093b41SRobert Mustacchiinternal error occurred.
122*ed093b41SRobert Mustacchi.El
123*ed093b41SRobert Mustacchi.Sh MT-LEVEL
124*ed093b41SRobert Mustacchi.Sy Safe
125*ed093b41SRobert Mustacchi.Sh SEE ALSO
126*ed093b41SRobert Mustacchi.Xr libc_db 3LIB ,
127*ed093b41SRobert Mustacchi.Xr attributes 7
128