1 .\"
   2 .\" This file and its contents are supplied under the terms of the
   3 .\" Common Development and Distribution License ("CDDL"), version 1.0.
   4 .\" You may only use this file in accordance with the terms of version
   5 .\" 1.0 of the CDDL.
   6 .\"
   7 .\" A full copy of the text of the CDDL should have accompanied this
   8 .\" source.  A copy of the CDDL is also available via the Internet at
   9 .\" http://www.illumos.org/license/CDDL.
  10 .\"
  11 .\"
  12 .\" Copyright 2015 Joyent, Inc.
  13 .\"
  14 .Dd May 11, 2016
  15 .Dt PLWP_GETASRS 3PROC
  16 .Os
  17 .Sh NAME
  18 .Nm Plwp_getasrs ,
  19 .Nm Plwp_setasrs
  20 .Nd get and set SPARCv9 ancillary state registers
  21 .Sh SYNOPSIS
  22 .Lb libproc
  23 .In libproc.h
  24 .Ft int
  25 .Fo Plwp_getasrs
  26 .Fa "struct ps_prochandle *P"
  27 .Fa "lwpid_t lwpid"
  28 .Fa "asrset_t asrs"
  29 .Fc
  30 .Ft int
  31 .Fo Plwp_setasrs
  32 .Fa "struct ps_prochandle *P"
  33 .Fa "lwpid_t lwpid"
  34 .Fa "const asrset_t asrs"
  35 .Fc
  36 .Sh DESCRIPTION
  37 The
  38 .Fn Plwp_getasrs
  39 and
  40 .Fn Plwp_setasrs
  41 functions get and set the ancillary thread-specific register set of the
  42 thread
  43 .Fa lwpid
  44 in the process handle
  45 .Fa P .
  46 .Pp
  47 The ancillary state registers are only present on 64-bit
  48 .Sy SPARCv9
  49 processes.
  50 They contain information that is specific to the platform and are not included
  51 in the information obtained through functions such as
  52 .Xr Plwp_getregs 3PROC ,
  53 .Xr Plwp_getfpregs 3PROC ,
  54 and
  55 .Xr Plwp_getxregs 3PROC .
  56 .Pp
  57 The
  58 .Fn Plwp_getasrs
  59 function reads the ancillary registers into
  60 .Fa asrs ,
  61 while the
  62 .Fn Plwp_setasrs
  63 sets the thread's ancillary registers to the values provided by
  64 .Fa asrs .
  65 .Pp
  66 Processes should be stopped prior to obtaining the register state of
  67 individual threads.
  68 Processes may be stopped with
  69 .Xr Pstop 3PROC .
  70 .Pp
  71 The
  72 .Sy asrset_t
  73 structure is described in
  74 .Xr proc 4 .
  75 .Pp
  76 One may not set the register values of a process that is not an active
  77 process, e.g. a process handle that refers to a file or a core file.
  78 .Sh RETURN VALUES
  79 Upon successful completion, the
  80 .Fn Plwp_getasrs
  81 and
  82 .Fn Plwp_setasrs
  83 functions return
  84 .Sy 0
  85 and get or set the register state.
  86 Otherwise,
  87 .Sy -1
  88 is returned and
  89 .Sy errno
  90 is set to indicate the error.
  91 .Sh ERRORS
  92 For a full list of possible errors see the
  93 .Sy DIAGNOSTICS
  94 section in
  95 .Xr proc 4 .
  96 .Pp
  97 The
  98 .Fn Plwp_getasrs
  99 and
 100 .Fn Plwp_setasrs
 101 function will fail if:
 102 .Bl -tag -width Er
 103 .It Er ENODATA
 104 The process handle
 105 .Fa P
 106 does not have any ancillary register state information.
 107 .It Er EBUSY
 108 The process handle
 109 .Fa P
 110 refers to a live process and it is not stopped.
 111 .It Er ENOENT
 112 The process handle
 113 .Fa P
 114 refers to a live process and there is no thread with id
 115 .Fa lwpid
 116 or it is not a 64-bit SPARCv9 process.
 117 .It Er EINVAL
 118 The process handle
 119 .Fa P
 120 refers to a core file and there is no thread with id
 121 .Fa lwpid .
 122 .El
 123 .Sh ARCHITECTURE
 124 The
 125 .Fn Plwp_getasrs
 126 and
 127 .Fn Plwp_setasrs
 128 functions are only available on
 129 64-bit
 130 .Sy SPARCv9
 131 platforms.
 132 .Sh INTERFACE STABILITY
 133 .Sy Uncommitted
 134 .Sh MT-LEVEL
 135 See
 136 .Sy LOCKING
 137 in
 138 .Xr libproc 3LIB .
 139 .Sh SEE ALSO
 140 .Xr libproc 3LIB ,
 141 .Xr Plwp_getfpregs 3PROC ,
 142 .Xr Plwp_getregs 3PROC ,
 143 .Xr Plwp_setregs 3PROC ,
 144 .Xr Plwp_setregs 3PROC ,
 145 .Xr Pstop 3PROC ,
 146 .Xr proc 4