Print this page
15254 %ymm registers not restored after signal handler
15367 x86 getfpregs() summons corrupting %xmm ghosts
15333 want x86 /proc xregs support (libc_db, libproc, mdb, etc.)
15336 want libc functions for extended ucontext_t
15334 want ps_lwphandle-specific reg routines
15328 FPU_CW_INIT mistreats reserved bit
15335 i86pc fpu_subr.c isn't really platform-specific
15332 setcontext(2) isn't actually noreturn
15331 need <sys/stdalign.h>
Change-Id: I7060aa86042dfb989f77fc3323c065ea2eafa9ad
Conflicts:
usr/src/uts/common/fs/proc/prcontrol.c
usr/src/uts/intel/os/archdep.c
usr/src/uts/intel/sys/ucontext.h
usr/src/uts/intel/syscall/getcontext.c
| Split |
Close |
| Expand all |
| Collapse all |
--- old/usr/src/man/man3proc/proc_service.3proc.man.txt
+++ new/usr/src/man/man3proc/proc_service.3proc.man.txt
1 1 PROC_SERVICE(3PROC) Process Control Library Functions PROC_SERVICE(3PROC)
2 2
3 3 NAME
4 4 proc_service - process service interfaces
5 5
6 6 SYNOPSIS
7 7 #include <proc_service.h>
8 8
9 9 ps_err_e ps_pdmodel(struct ps_prochandle *ph,
10 10 int *data_model);
11 11
12 12
13 13 ps_err_e ps_pglobal_lookup(struct ps_prochandle *ph,
14 14 const char *object_name, const char *sym_name,
15 15 psaddr_t *sym_addr);
16 16
17 17
18 18 ps_err_e ps_pglobal_sym(struct ps_prochandle *ph,
19 19 const char *object_name, const char *sym_name,
20 20 ps_sym_t *sym);
21 21
22 22
23 23 ps_err_e ps_pread(struct ps_prochandle *ph, psaddr_t addr,
24 24 void *buf, size_t size);
25 25
26 26
27 27 ps_err_e ps_pwrite(struct ps_prochandle *ph, psaddr_t addr,
28 28 const void *buf, size_t size);
29 29
30 30
31 31 ps_err_e ps_pdread(struct ps_prochandle *ph, psaddr_t addr,
32 32 void *buf, size_t size);
33 33
34 34
35 35 ps_err_e ps_pdwrite(struct ps_prochandle *ph, psaddr_t addr,
36 36 const void *buf, size_t size);
37 37
38 38
39 39 ps_err_e ps_ptread(struct ps_prochandle *ph, psaddr_t addr,
40 40 void *buf, size_t size);
41 41
42 42
43 43 ps_err_e ps_ptwrite(struct ps_prochandle *ph, psaddr_t addr,
44 44 const void *buf, size_t size);
45 45
46 46
47 47 ps_err_e ps_pstop(struct ps_prochandle *ph);
48 48
49 49
50 50 ps_err_e ps_pcontinue(struct ps_prochandle *ph);
51 51
52 52
53 53 ps_err_e ps_lstop(struct ps_prochandle *ph, lwpid_t lwpid);
54 54
55 55
56 56 ps_err_e ps_lcontinue(struct ps_prochandle *ph, lwpid_t lwpid);
57 57
58 58
59 59 ps_err_e ps_lgetregs(struct ps_prochandle *ph, lwpid_t lwpid,
60 60 prgregset_t gregset);
61 61
62 62
63 63 ps_err_e ps_lsetregs(struct ps_prochandle *ph, lwpid_t lwpid,
64 64 const prgregset_t gregset);
65 65
66 66
67 67 ps_err_e ps_lgetfpregs(struct ps_prochandle *ph, lwpid_t lwpid,
68 68 prfpregset_t *fpregset);
69 69
70 70
71 71 ps_err_e ps_lsetfpregs(struct ps_prochandle *ph, lwpid_t lwpid,
72 72 const prfpregset_t *fpregset);
73 73
74 74
75 75 ps_err_e ps_pauxv(struct ps_prochandle *ph,
76 76 const auxv_t **auxp);
77 77
78 78
|
↓ open down ↓ |
78 lines elided |
↑ open up ↑ |
79 79 ps_err_e ps_kill(struct ps_prochandle *ph, int sig);
80 80
81 81
82 82 ps_err_e ps_lrolltoaddr(struct ps_prochandle *ph,
83 83 lwpid_t lwpid, psaddr_t go_addr, psaddr_t stop_addr);
84 84
85 85
86 86 void ps_plog(const char *fmt);
87 87
88 88
89 - SPARC
90 89 ps_err_e ps_lgetxregsize(struct ps_prochandle *ph,
91 90 lwpid_t lwpid, int *xregsize);
92 91
93 92
94 93 ps_err_e ps_lgetxregs(struct ps_prochandle *ph,
95 94 lwpid_t lwpid, caddr_t xregset);
96 95
97 96
98 97 ps_err_e ps_lsetxregs(struct ps_prochandle *ph,
99 98 lwpid_t lwpid, caddr_t xregset);
100 99
101 100
102 101 x86
103 102 ps_err_e ps_lgetLDT(struct ps_prochandle *ph, lwpid_t lwpid,
104 103 struct ssd *ldt);
105 104
106 105
107 106 DESCRIPTION
108 107 Every program that links libthread_db or librtld_db must provide a set
109 108 of process control primitives that allow libthread_db and librtld_db to
110 109 access memory and registers in the target process, to start and to stop
111 110 the target process, and to look up symbols in the target process. See
112 111 libc_db(3LIB). For information on librtld_db, refer to the Linker and
113 112 Libraries Guide.
114 113
115 114
116 115 Refer to the individual reference manual pages that describe these
117 116 routines for a functional specification that clients of libthread_db
118 117 and librtld_db can use to implement this required interface. The
119 118 <proc_service.h> header lists the C declarations of these routines.
120 119
121 120 FUNCTIONS
122 121 ps_pdmodel()
123 122 Returns the data model of the target process.
124 123
125 124
126 125 ps_pglobal_lookup()
127 126 Looks up the symbol in the symbol table of the
128 127 load object in the target process and returns
129 128 its address.
130 129
131 130
132 131 ps_pglobal_sym()
133 132 Looks up the symbol in the symbol table of the
134 133 load object in the target process and returns
135 134 its symbol table entry.
136 135
137 136
138 137 ps_pread()
139 138 Copies size bytes from the target process to the
140 139 controlling process.
141 140
142 141
143 142 ps_pwrite()
144 143 Copies size bytes from the controlling process
145 144 to the target process.
146 145
147 146
148 147 ps_pdread()
149 148 Identical to ps_pread().
150 149
151 150
152 151 ps_pdwrite()
153 152 Identical to ps_pwrite().
154 153
155 154
156 155 ps_ptread()
157 156 Identical to ps_pread().
158 157
159 158
160 159 ps_ptwrite()
161 160 Identical to ps_pwrite().
162 161
163 162
164 163 ps_pstop()
165 164 Stops the target process.
166 165
167 166
168 167 ps_pcontinue()
169 168 Resumes target process.
170 169
171 170
172 171 ps_lstop()
173 172 Stops a single lightweight process ( LWP )
174 173 within the target process.
175 174
176 175
177 176 ps_lcontinue()
178 177 Resumes a single LWP within the target process.
179 178
180 179
181 180 ps_lgetregs()
182 181 Gets the general registers of the LWP.
183 182
184 183
185 184 ps_lsetregs()
186 185 Sets the general registers of the LWP.
187 186
188 187
189 188 ps_lgetfpregs()
190 189 Gets the LWP`s floating point register set.
191 190
192 191
193 192 ps_lsetfpregs()
194 193 Sets the LWP`s floating point register set.
195 194
196 195
197 196 ps_pauxv()
198 197 Returns a pointer to a read-only copy of the
199 198 auxiliary vector of the target process.
200 199
201 200
202 201 ps_kill()
203 202 Sends signal to target process.
|
↓ open down ↓ |
104 lines elided |
↑ open up ↑ |
204 203
205 204
206 205 ps_lrolltoaddr()
207 206 Rolls the LWP out of a critical section when the
208 207 process is stopped.
209 208
210 209
211 210 ps_plog()
212 211 Logs a message.
213 212
214 -
215 - SPARC
216 213 ps_lgetxregsize()
217 214 Returns the size of the architecture-dependent
218 215 extra state registers.
219 216
220 217
221 218 ps_lgetxregs()
222 219 Gets the extra state registers of the LWP.
223 220
224 221
225 222 ps_lsetxregs()
226 223 Sets the extra state registers of the LWP.
227 224
228 225
229 226 x86
230 227 ps_lgetLDT()
231 228 Reads the local descriptor table of the LWP.
232 229
233 230
234 231 ATTRIBUTES
235 232 See attributes(7) for description of the following attributes:
236 233
237 234
238 235
239 236
240 237 +---------------+-----------------+
241 238 |ATTRIBUTE TYPE | ATTRIBUTE VALUE |
242 239 +---------------+-----------------+
|
↓ open down ↓ |
17 lines elided |
↑ open up ↑ |
243 240 |MT Level | Safe |
244 241 +---------------+-----------------+
245 242
246 243 SEE ALSO
247 244 rtld_db(3EXT), libc_db(3LIB), librtld_db(3LIB), ps_pread(3PROC),
248 245 attributes(7)
249 246
250 247
251 248 Linker and Libraries Guide
252 249
253 - October 12, 2007 PROC_SERVICE(3PROC)
250 + January 23, 2023 PROC_SERVICE(3PROC)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX