@@ -178,6 +178,121 @@ const char* __tsan_default_options(void);
178
178
// User-provided default TSAN suppressions.
179
179
const char * __tsan_default_suppressions (void );
180
180
181
+ // / Returns a report's description.
182
+ // /
183
+ // / Returns a report's description (issue type), number of duplicate issues
184
+ // / found, counts of array data (stack traces, memory operations, locations,
185
+ // / mutexes, threads, unique thread IDs) and a stack trace of a <c>sleep()</c>
186
+ // / call (if one was involved in the issue).
187
+ // /
188
+ // / \param report Opaque pointer to the current report.
189
+ // / \param[out] description Report type description.
190
+ // / \param[out] count Count of duplicate issues.
191
+ // / \param[out] stack_count Count of stack traces.
192
+ // / \param[out] mop_count Count of memory operations.
193
+ // / \param[out] loc_count Count of locations.
194
+ // / \param[out] mutex_count Count of mutexes.
195
+ // / \param[out] thread_count Count of threads.
196
+ // / \param[out] unique_tid_count Count of unique thread IDs.
197
+ // / \param sleep_trace A buffer to store the stack trace of a <c>sleep()</c>
198
+ // / call.
199
+ // / \param trace_size Size in bytes of the trace buffer.
200
+ // / \returns Returns 1 if successful, 0 if not.
201
+ int __tsan_get_report_data (void *report, const char **description, int *count,
202
+ int *stack_count, int *mop_count, int *loc_count,
203
+ int *mutex_count, int *thread_count,
204
+ int *unique_tid_count, void **sleep_trace,
205
+ uintptr_t trace_size);
206
+
207
+ // / Returns information about stack traces included in the report.
208
+ // /
209
+ // / \param report Opaque pointer to the current report.
210
+ // / \param idx Index to the report's stacks.
211
+ // / \param trace A buffer to store the stack trace.
212
+ // / \param trace_size Size in bytes of the trace buffer.
213
+ // / \returns Returns 1 if successful, 0 if not.
214
+ int __tsan_get_report_stack (void *report, uintptr_t idx, void **trace,
215
+ uintptr_t trace_size);
216
+
217
+ // / Returns information about memory operations included in the report.
218
+ // /
219
+ // / \param report Opaque pointer to the current report.
220
+ // / \param idx Index to the report's memory operations.
221
+ // / \param[out] tid Thread ID of the memory operation.
222
+ // / \param[out] addr Address of the memory operation.
223
+ // / \param[out] size Size of the memory operation.
224
+ // / \param[out] write Write flag of the memory operation.
225
+ // / \param[out] atomic Atomicity flag of the memory operation.
226
+ // / \param trace A buffer to store the stack trace.
227
+ // / \param trace_size Size in bytes of the trace buffer.
228
+ // / \returns Returns 1 if successful, 0 if not.
229
+ int __tsan_get_report_mop (void *report, uintptr_t idx, int *tid, void **addr,
230
+ int *size, int *write, int *atomic, void **trace,
231
+ uintptr_t trace_size);
232
+
233
+ // / Returns information about locations included in the report.
234
+ // /
235
+ // / \param report Opaque pointer to the current report.
236
+ // / \param idx Index to the report's locations.
237
+ // / \param[out] type Type of the location.
238
+ // / \param[out] addr Address of the location.
239
+ // / \param[out] start Start of the location.
240
+ // / \param[out] size Size of the location.
241
+ // / \param[out] tid Thread ID of the location.
242
+ // / \param[out] fd File descriptor of the location.
243
+ // / \param[out] suppressable Suppressable flag.
244
+ // / \param trace A buffer to store the stack trace.
245
+ // / \param trace_size Size in bytes of the trace buffer.
246
+ // / \returns Returns 1 if successful, 0 if not.
247
+ int __tsan_get_report_loc (void *report, uintptr_t idx, const char **type,
248
+ void **addr, uintptr_t *start, uintptr_t *size, int *tid,
249
+ int *fd, int *suppressable, void **trace,
250
+ uintptr_t trace_size);
251
+
252
+ // / Returns information about mutexes included in the report.
253
+ // /
254
+ // / \param report Opaque pointer to the current report.
255
+ // / \param idx Index to the report's mutexes.
256
+ // / \param[out] mutex_id Id of the mutex.
257
+ // / \param[out] addr Address of the mutex.
258
+ // / \param[out] destroyed Destroyed mutex flag.
259
+ // / \param trace A buffer to store the stack trace.
260
+ // / \param trace_size Size in bytes of the trace buffer.
261
+ // / \returns Returns 1 if successful, 0 if not.
262
+ int __tsan_get_report_mutex (void *report, uintptr_t idx, uintptr_t *mutex_id, void **addr,
263
+ int *destroyed, void **trace, uintptr_t trace_size);
264
+
265
+ // / Returns information about threads included in the report.
266
+ // /
267
+ // / \param report Opaque pointer to the current report.
268
+ // / \param idx Index to the report's threads.
269
+ // / \param[out] tid Thread ID of the thread.
270
+ // / \param[out] os_id Operating system's ID of the thread.
271
+ // / \param[out] running Running flag of the thread.
272
+ // / \param[out] name Name of the thread.
273
+ // / \param[out] parent_tid ID of the parent thread.
274
+ // / \param trace A buffer to store the stack trace.
275
+ // / \param trace_size Size in bytes of the trace buffer.
276
+ // / \returns Returns 1 if successful, 0 if not.
277
+ int __tsan_get_report_thread (void *report, uintptr_t idx, int *tid, uintptr_t *os_id,
278
+ int *running, const char **name, int *parent_tid,
279
+ void **trace, uintptr_t trace_size);
280
+
281
+ // / Returns information about unique thread IDs included in the report.
282
+ // /
283
+ // / \param report Opaque pointer to the current report.
284
+ // / \param idx Index to the report's unique thread IDs.
285
+ // / \param[out] tid Unique thread ID of the report.
286
+ // / \returns Returns 1 if successful, 0 if not.
287
+ int __tsan_get_report_unique_tid (void *report, uintptr_t idx, int *tid);
288
+
289
+ // / Returns the current report.
290
+ // /
291
+ // / If TSan is currently reporting a detected issue on the current thread,
292
+ // / returns an opaque pointer to the current report. Otherwise returns NULL.
293
+ // / \returns An opaque pointer to the current report. Otherwise returns NULL.
294
+ void *__tsan_get_current_report ();
295
+
181
296
#ifdef __cplusplus
182
297
} // extern "C"
183
298
#endif
0 commit comments