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 PGETAREG 3PROC 1643051d27SRobert Mustacchi.Os 1743051d27SRobert Mustacchi.Sh NAME 1843051d27SRobert Mustacchi.Nm Pgetareg , 1943051d27SRobert Mustacchi.Nm Pputareg , 2043051d27SRobert Mustacchi.Nm Lgetareg , 2143051d27SRobert Mustacchi.Nm Lputareg 2243051d27SRobert Mustacchi.Nd set and get a register from a stopped process or thread 23ab618543SJohn Levon.Sh LIBRARY 2443051d27SRobert Mustacchi.Lb libproc 25ab618543SJohn Levon.Sh SYNOPSIS 2643051d27SRobert Mustacchi.In libproc.h 2743051d27SRobert Mustacchi.Ft int 2843051d27SRobert Mustacchi.Fo Pgetareg 2943051d27SRobert Mustacchi.Fa "struct ps_prochandle *P" 3043051d27SRobert Mustacchi.Fa "int regno" 3143051d27SRobert Mustacchi.Fa "prgreg_t *preg" 3243051d27SRobert Mustacchi.Fc 3343051d27SRobert Mustacchi.Ft int 3443051d27SRobert Mustacchi.Fo Pputareg 3543051d27SRobert Mustacchi.Fa "struct ps_prochandle *P" 3643051d27SRobert Mustacchi.Fa "int regno" 3743051d27SRobert Mustacchi.Fa "prgreg_t preg" 3843051d27SRobert Mustacchi.Fc 3943051d27SRobert Mustacchi.Ft int 4043051d27SRobert Mustacchi.Fo Lgetareg 4143051d27SRobert Mustacchi.Fa "struct ps_lwphandle *L" 4243051d27SRobert Mustacchi.Fa "int regno" 4343051d27SRobert Mustacchi.Fa "prgreg_t *preg" 4443051d27SRobert Mustacchi.Fc 4543051d27SRobert Mustacchi.Ft int 4643051d27SRobert Mustacchi.Fo Lputareg 4743051d27SRobert Mustacchi.Fa "struct ps_lwphandle *L" 4843051d27SRobert Mustacchi.Fa "int regno" 4943051d27SRobert Mustacchi.Fa "prgreg_t preg" 5043051d27SRobert Mustacchi.Fc 5143051d27SRobert Mustacchi.Sh DESCRIPTION 5243051d27SRobert MustacchiThe 5343051d27SRobert Mustacchi.Fn Pgetareg 5443051d27SRobert Mustacchiand 5543051d27SRobert Mustacchi.Fn Pputareg 5643051d27SRobert Mustacchifunctions read and update the registers of the process handle referred 5743051d27SRobert Mustacchito by 5843051d27SRobert Mustacchi.Fa P . 5943051d27SRobert MustacchiThe getting and setting of registers of the process operates on the 6072d3dbb9SYuri Pankovrepresentative thread (LWP). 6172d3dbb9SYuri PankovFor more information on how the representative is chosen, see 62*bbf21555SRichard Lowe.Xr proc 5 . 63b31ca922SChris Fraire.Pp 6443051d27SRobert MustacchiTo change the registers of a specific thread, use the 65c66b8046SYuri Pankov.Fn Lgetareg 6643051d27SRobert Mustacchiand 67b31ca922SChris Fraire.Fn Lputareg 6843051d27SRobert Mustacchifunctions. 6943051d27SRobert Mustacchi.Pp 7072d3dbb9SYuri PankovThe getting and setting of registers only applies to stopped processes. 7172d3dbb9SYuri PankovIn addition, one may obtain registers from core files, but not set them. 7272d3dbb9SYuri PankovTo stop a process, see the 7343051d27SRobert Mustacchi.Xr Pstop 3PROC 7443051d27SRobert Mustacchifunction. 7543051d27SRobert Mustacchi.Pp 7643051d27SRobert MustacchiThe register to get or set is indicated by the 7743051d27SRobert Mustacchi.Fa regno 7872d3dbb9SYuri Pankovargument. 7972d3dbb9SYuri PankovFor a list of registers, see 8043051d27SRobert Mustacchi.In sys/regset.h . 8172d3dbb9SYuri PankovThe set of registers is specific to each architecture of the system. 8272d3dbb9SYuri PankovThe 8343051d27SRobert Mustacchi.Fn Pgetareg 8443051d27SRobert Mustacchifunction will fill in the value of 8543051d27SRobert Mustacchi.Fa preg 8643051d27SRobert Mustacchiwith the value of the register 8743051d27SRobert Mustacchi.Fa regno , 8843051d27SRobert Mustacchiwhile the 8943051d27SRobert Mustacchi.Fn Pputareg 9043051d27SRobert Mustacchifunction will update the value of the register 9143051d27SRobert Mustacchi.Fa regno 9243051d27SRobert Mustacchiwith the value in 9343051d27SRobert Mustacchi.Fa preg . 9443051d27SRobert MustacchiUpdated registers will be set when the process resumes execution. 9543051d27SRobert Mustacchi.Pp 9643051d27SRobert MustacchiThe 9743051d27SRobert Mustacchi.Fn Lgetareg 9843051d27SRobert Mustacchiand 9943051d27SRobert Mustacchi.Fn Lputareg 10043051d27SRobert Mustacchifunctions are equivalent to the 10143051d27SRobert Mustacchi.Fn Pgetareg 10243051d27SRobert Mustacchiand 10343051d27SRobert Mustacchi.Fn Psetareg 10443051d27SRobert Mustacchifunctions, except rather than operating on the process and its 10543051d27SRobert Mustacchirepresentative thread, they instead operate on the thread handle 10643051d27SRobert Mustacchi.Fa L . 10743051d27SRobert Mustacchi.Sh RETURN VALUES 10843051d27SRobert MustacchiUpon successful completion, the 10943051d27SRobert Mustacchi.Fn Pgetareg 11043051d27SRobert Mustacchiand 11143051d27SRobert Mustacchi.Fn Pputareg 11243051d27SRobert Mustacchifunction return 11343051d27SRobert Mustacchi.Sy 0 . 11443051d27SRobert MustacchiOtherwise, 11543051d27SRobert Mustacchi.Sy -1 11643051d27SRobert Mustacchiis returned, 11743051d27SRobert Mustacchi.Sy errno 11843051d27SRobert Mustacchiis set, and no registers will have been gotten or updated. 11943051d27SRobert Mustacchi.Sh ERRORS 12043051d27SRobert MustacchiThe 12143051d27SRobert Mustacchi.Fn Pgetareg 12243051d27SRobert Mustacchiand 12343051d27SRobert Mustacchi.Fn Lgetareg 12443051d27SRobert Mustacchifunctions will fail if: 12543051d27SRobert Mustacchi.Bl -tag -width Er 12643051d27SRobert Mustacchi.It Er EINVAL 12743051d27SRobert MustacchiThe value of 12843051d27SRobert Mustacchi.Fa regno 12972d3dbb9SYuri Pankovis invalid. 13072d3dbb9SYuri PankovThis means it is less than 13143051d27SRobert Mustacchi.Sy 0 13243051d27SRobert Mustacchiand greater than 13343051d27SRobert Mustacchi.Sy NPRGREG . 13443051d27SRobert MustacchiNote, 13543051d27SRobert Mustacchi.Sy NPRGREG Ns 's 13643051d27SRobert Mustacchivalue varies based on process architecture. 13743051d27SRobert Mustacchi.It Er EBUSY 13843051d27SRobert MustacchiThe handle 13943051d27SRobert Mustacchi.Fa P 14043051d27SRobert Mustacchiis neither stopped nor a core file. 14143051d27SRobert Mustacchi.It Er ENODATA 14243051d27SRobert MustacchiThe handle 14343051d27SRobert Mustacchi.Fa P 14443051d27SRobert Mustacchirefers to a file obtained through 14543051d27SRobert Mustacchi.Xr Pgrab_file 3PROC . 14643051d27SRobert Mustacchi.El 14743051d27SRobert Mustacchi.Pp 14843051d27SRobert MustacchiThe 14943051d27SRobert Mustacchi.Fn Pputareg 15043051d27SRobert Mustacchiand 15143051d27SRobert Mustacchi.Fn Lputareg 15243051d27SRobert Mustacchifunctions will fail if: 15343051d27SRobert Mustacchi.Bl -tag -width Er 15443051d27SRobert Mustacchi.It Er EINVAL 15543051d27SRobert MustacchiThe value of 15643051d27SRobert Mustacchi.Fa regno 15772d3dbb9SYuri Pankovis invalid. 15872d3dbb9SYuri PankovThis means it is less than 15943051d27SRobert Mustacchi.Sy 0 16043051d27SRobert Mustacchiand greater than 16143051d27SRobert Mustacchi.Sy NPRGREG . 16243051d27SRobert MustacchiNote, 16343051d27SRobert Mustacchi.Sy NPRGREG Ns 's 16443051d27SRobert Mustacchivalue varies based on process architecture. 16543051d27SRobert Mustacchi.It Er EBUSY 16643051d27SRobert MustacchiThe handle 16743051d27SRobert Mustacchi.Fa P 16843051d27SRobert Mustacchiis not stopped or refers to a non-active process. 16943051d27SRobert Mustacchi.El 17043051d27SRobert Mustacchi.Sh INTERFACE STABILITY 17143051d27SRobert Mustacchi.Sy Uncommitted 17243051d27SRobert Mustacchi.Sh MT-LEVEL 17343051d27SRobert MustacchiSee 17443051d27SRobert Mustacchi.Sy LOCKING 17543051d27SRobert Mustacchiin 17643051d27SRobert Mustacchi.Xr libproc 3LIB . 17743051d27SRobert Mustacchi.Sh SEE ALSO 17843051d27SRobert Mustacchi.Xr errno 3C , 17943051d27SRobert Mustacchi.Xr libproc 3LIB , 18043051d27SRobert Mustacchi.Xr Lgrab 3PROC , 18143051d27SRobert Mustacchi.Xr Pgrab_file 3PROC , 18243051d27SRobert Mustacchi.Xr Pstop 3PROC , 183*bbf21555SRichard Lowe.Xr proc 5 184