PLWP_GETREGS(3PROC) Process Control Library Functions PLWP_GETREGS(3PROC)

NAME


Plwp_getfpregs, Plwp_setfpregs, Plwp_getregs, Plwp_setregs - get and set
thread registers

LIBRARY


Process Control Library (libproc, -lproc)

SYNOPSIS


#include <libproc.h>

int
Plwp_getfpregs(struct ps_prochandle *P, lwpid_t lwpid,
prfpregset_t *fpregs);

int
Plwp_setfpregs(struct ps_prochandle *P, lwpid_t lwpid,
const prfpregset_t fpregs);

int
Plwp_getregs(struct ps_prochandle *P, lwpid_t lwpid, prpregset_t *gregs);

int
Plwp_setregs(struct ps_prochandle *P, lwpid_t lwpid,
const prpregset_t gregs);

DESCRIPTION


The Plwp_getregs(), Plwp_setregs(), Plwp_getfpregs(), and Plwp_setfpregs()
functions allow one to get and set the general purpose and floating point
registers from the thread lwpid in the process handle P.

The Plwp_getfpregs() function updates the structure pointed to by fpregs
with the state and values of the floating point registers of the thread
specified by lwpid.

The Plwp_setfpregs() function updates the floating point registers of the
thread specified by lwpid to the register state contained in fpregs.

The Plwp_getregs() function updates the structure pointed to by gregs with
the state and values of the general purpose registers of the thread
specified by lwpid.

The Plwp_setregs() function updates the general purpose registers of the
thread specified by lwpid to the register state contained in gregs.

Processes must be stopped before obtaining the register state of individual
threads. Processes may be stopped with Pstop(3PROC). The structures used
for registers are described in proc(4) and their defintions may be found in
<sys/regset.h>. The definitions of these structures varies based on the
architecture of the system and the running process.

One may not set the register values of a process that is not an active
process, e.g. a process handle that refers to a file or a core file.

RETURN VALUES


Upon successful completion, the Plwp_getregs(), Plwp_setregs(),
Plwp_getfpregs(), and Plwp_setfpregs() functions return 0 and obtain or set
the register state. Otherwise, -1 is returned, errno is set to indicate
the error, and the register state is not updated nor are the data pointers
changed.

ERRORS


For a full list of possible errors also see the DIAGNOSTICS section in
proc(4).

The Plwp_getregs(), Plwp_setregs(), Plwp_getfpregs(), and Plwp_setfpregs()
will fail if:

EBUSY The process handle P is not currently stopped.

ENOENT There is no thread in P with id lwpid.

INTERFACE STABILITY


Uncommitted

MT-LEVEL
See LOCKING in libproc(3LIB).

SEE ALSO


libproc(3LIB), proc(4)

illumos May 11, 2016 illumos