@@ -172,6 +172,129 @@ int __tsan_on_finalize(int failed);
172
172
// Release TSan internal memory in a best-effort manner.
173
173
void __tsan_flush_memory ();
174
174
175
+ // User-provided default TSAN options.
176
+ const char * __tsan_default_options (void );
177
+
178
+ // User-provided default TSAN suppressions.
179
+ const char * __tsan_default_suppressions (void );
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
+ unsigned long 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, unsigned long idx, void **trace,
215
+ unsigned long 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, unsigned long idx, int *tid,
230
+ void **addr, int *size, int *write, int *atomic,
231
+ void **trace, unsigned long 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, unsigned long idx, const char **type,
248
+ void **addr, void **start, unsigned long *size,
249
+ int *tid, int *fd, int *suppressable, void **trace,
250
+ unsigned long 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, unsigned long idx, uint64_t *mutex_id,
263
+ void **addr, int *destroyed, void **trace,
264
+ unsigned long trace_size);
265
+
266
+ // / Returns information about threads included in the report.
267
+ // /
268
+ // / \param report Opaque pointer to the current report.
269
+ // / \param idx Index to the report's threads.
270
+ // / \param[out] tid Thread ID of the thread.
271
+ // / \param[out] os_id Operating system's ID of the thread.
272
+ // / \param[out] running Running flag of the thread.
273
+ // / \param[out] name Name of the thread.
274
+ // / \param[out] parent_tid ID of the parent thread.
275
+ // / \param trace A buffer to store the stack trace.
276
+ // / \param trace_size Size in bytes of the trace buffer.
277
+ // / \returns Returns 1 if successful, 0 if not.
278
+ int __tsan_get_report_thread (void *report, unsigned long idx, int *tid,
279
+ uint64_t *os_id, int *running, const char **name,
280
+ int *parent_tid, void **trace,
281
+ unsigned long trace_size);
282
+
283
+ // / Returns information about unique thread IDs included in the report.
284
+ // /
285
+ // / \param report Opaque pointer to the current report.
286
+ // / \param idx Index to the report's unique thread IDs.
287
+ // / \param[out] tid Unique thread ID of the report.
288
+ // / \returns Returns 1 if successful, 0 if not.
289
+ int __tsan_get_report_unique_tid (void *report, unsigned long idx, int *tid);
290
+
291
+ // / Returns the current report.
292
+ // /
293
+ // / If TSan is currently reporting a detected issue on the current thread,
294
+ // / returns an opaque pointer to the current report. Otherwise returns NULL.
295
+ // / \returns An opaque pointer to the current report. Otherwise returns NULL.
296
+ void *__tsan_get_current_report ();
297
+
175
298
#ifdef __cplusplus
176
299
} // extern "C"
177
300
#endif
0 commit comments