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