blob: 61eea825b5461441cdfd8d19df14fca633f644cb [file] [log] [blame]
Kostya Serebryany7ac41482012-05-10 13:48:04 +00001//===-- tsan_stat.h ---------------------------------------------*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// This file is a part of ThreadSanitizer (TSan), a race detector.
11//
12//===----------------------------------------------------------------------===//
13
14#ifndef TSAN_STAT_H
15#define TSAN_STAT_H
16
17namespace __tsan {
18
19enum StatType {
20 // Memory access processing related stuff.
21 StatMop,
22 StatMopRead,
23 StatMopWrite,
24 StatMop1, // These must be consequtive.
25 StatMop2,
26 StatMop4,
27 StatMop8,
28 StatMopSame,
29 StatMopRange,
Dmitry Vyukov82dbc512013-03-20 13:21:50 +000030 StatMopRodata,
31 StatMopRangeRodata,
Kostya Serebryany7ac41482012-05-10 13:48:04 +000032 StatShadowProcessed,
33 StatShadowZero,
34 StatShadowNonZero, // Derived.
35 StatShadowSameSize,
36 StatShadowIntersect,
37 StatShadowNotIntersect,
38 StatShadowSameThread,
39 StatShadowAnotherThread,
40 StatShadowReplace,
41
42 // Func processing.
43 StatFuncEnter,
44 StatFuncExit,
45
46 // Trace processing.
47 StatEvents,
48
49 // Threads.
50 StatThreadCreate,
51 StatThreadFinish,
52 StatThreadReuse,
53 StatThreadMaxTid,
54 StatThreadMaxAlive,
55
56 // Mutexes.
57 StatMutexCreate,
58 StatMutexDestroy,
59 StatMutexLock,
60 StatMutexUnlock,
61 StatMutexRecLock,
62 StatMutexRecUnlock,
63 StatMutexReadLock,
64 StatMutexReadUnlock,
65
66 // Synchronization.
67 StatSyncCreated,
68 StatSyncDestroyed,
69 StatSyncAcquire,
70 StatSyncRelease,
71
72 // Atomics.
73 StatAtomic,
74 StatAtomicLoad,
75 StatAtomicStore,
76 StatAtomicExchange,
77 StatAtomicFetchAdd,
Dmitry Vyukov529cfa02012-10-04 10:08:23 +000078 StatAtomicFetchSub,
Dmitry Vyukovcdfb33a2012-05-14 15:33:00 +000079 StatAtomicFetchAnd,
80 StatAtomicFetchOr,
81 StatAtomicFetchXor,
Dmitry Vyukov02b45d22012-11-26 09:42:56 +000082 StatAtomicFetchNand,
Kostya Serebryany7ac41482012-05-10 13:48:04 +000083 StatAtomicCAS,
84 StatAtomicFence,
85 StatAtomicRelaxed,
86 StatAtomicConsume,
87 StatAtomicAcquire,
88 StatAtomicRelease,
89 StatAtomicAcq_Rel,
90 StatAtomicSeq_Cst,
91 StatAtomic1,
92 StatAtomic2,
93 StatAtomic4,
94 StatAtomic8,
Dmitry Vyukov63da5092012-11-27 07:41:27 +000095 StatAtomic16,
Kostya Serebryany7ac41482012-05-10 13:48:04 +000096
97 // Interceptors.
98 StatInterceptor,
Dmitry Vyukovf037f562012-05-31 18:03:59 +000099 StatInt_longjmp,
100 StatInt_siglongjmp,
Kostya Serebryany7ac41482012-05-10 13:48:04 +0000101 StatInt_malloc,
Dmitry Vyukov07ba8ef2012-11-30 17:27:58 +0000102 StatInt___libc_memalign,
Kostya Serebryany7ac41482012-05-10 13:48:04 +0000103 StatInt_calloc,
104 StatInt_realloc,
105 StatInt_free,
106 StatInt_cfree,
Alexey Samsonov8a6b5e52013-02-25 08:43:10 +0000107 StatInt_malloc_usable_size,
Kostya Serebryany7ac41482012-05-10 13:48:04 +0000108 StatInt_mmap,
109 StatInt_mmap64,
110 StatInt_munmap,
111 StatInt_memalign,
112 StatInt_valloc,
113 StatInt_pvalloc,
114 StatInt_posix_memalign,
115 StatInt__Znwm,
116 StatInt__ZnwmRKSt9nothrow_t,
117 StatInt__Znam,
118 StatInt__ZnamRKSt9nothrow_t,
119 StatInt__ZdlPv,
120 StatInt__ZdlPvRKSt9nothrow_t,
121 StatInt__ZdaPv,
122 StatInt__ZdaPvRKSt9nothrow_t,
123 StatInt_strlen,
124 StatInt_memset,
125 StatInt_memcpy,
126 StatInt_strcmp,
127 StatInt_memchr,
128 StatInt_memrchr,
129 StatInt_memmove,
130 StatInt_memcmp,
131 StatInt_strchr,
132 StatInt_strchrnul,
133 StatInt_strrchr,
134 StatInt_strncmp,
135 StatInt_strcpy,
136 StatInt_strncpy,
Dmitry Vyukovbe523662013-03-26 12:40:23 +0000137 StatInt_strcasecmp,
138 StatInt_strncasecmp,
Kostya Serebryany7ac41482012-05-10 13:48:04 +0000139 StatInt_strstr,
Dmitry Vyukov39fa68e2013-09-21 23:44:19 +0000140 StatInt_strdup,
Kostya Serebryany7ac41482012-05-10 13:48:04 +0000141 StatInt_atexit,
Dmitry Vyukovc78140f2013-10-03 14:00:46 +0000142 StatInt__exit,
Kostya Serebryany7ac41482012-05-10 13:48:04 +0000143 StatInt___cxa_guard_acquire,
144 StatInt___cxa_guard_release,
Dmitry Vyukov1ffeded2012-12-05 12:10:22 +0000145 StatInt___cxa_guard_abort,
Kostya Serebryany7ac41482012-05-10 13:48:04 +0000146 StatInt_pthread_create,
147 StatInt_pthread_join,
148 StatInt_pthread_detach,
149 StatInt_pthread_mutex_init,
150 StatInt_pthread_mutex_destroy,
151 StatInt_pthread_mutex_lock,
152 StatInt_pthread_mutex_trylock,
153 StatInt_pthread_mutex_timedlock,
154 StatInt_pthread_mutex_unlock,
155 StatInt_pthread_spin_init,
156 StatInt_pthread_spin_destroy,
157 StatInt_pthread_spin_lock,
158 StatInt_pthread_spin_trylock,
159 StatInt_pthread_spin_unlock,
160 StatInt_pthread_rwlock_init,
161 StatInt_pthread_rwlock_destroy,
162 StatInt_pthread_rwlock_rdlock,
163 StatInt_pthread_rwlock_tryrdlock,
164 StatInt_pthread_rwlock_timedrdlock,
165 StatInt_pthread_rwlock_wrlock,
166 StatInt_pthread_rwlock_trywrlock,
167 StatInt_pthread_rwlock_timedwrlock,
168 StatInt_pthread_rwlock_unlock,
Dmitry Vyukovfae2bff2013-09-19 23:44:51 +0000169 StatInt_pthread_cond_init,
170 StatInt_pthread_cond_destroy,
171 StatInt_pthread_cond_signal,
172 StatInt_pthread_cond_broadcast,
173 StatInt_pthread_cond_wait,
174 StatInt_pthread_cond_timedwait,
Kostya Serebryany7ac41482012-05-10 13:48:04 +0000175 StatInt_pthread_barrier_init,
176 StatInt_pthread_barrier_destroy,
177 StatInt_pthread_barrier_wait,
178 StatInt_pthread_once,
Evgeniy Stepanov56d34722013-05-21 08:12:08 +0000179 StatInt_pthread_getschedparam,
Kostya Serebryany7ac41482012-05-10 13:48:04 +0000180 StatInt_sem_init,
181 StatInt_sem_destroy,
182 StatInt_sem_wait,
183 StatInt_sem_trywait,
184 StatInt_sem_timedwait,
185 StatInt_sem_post,
186 StatInt_sem_getvalue,
Dmitry Vyukov61ba1b52013-01-29 09:23:09 +0000187 StatInt_stat,
188 StatInt___xstat,
189 StatInt_stat64,
190 StatInt___xstat64,
191 StatInt_lstat,
192 StatInt___lxstat,
193 StatInt_lstat64,
194 StatInt___lxstat64,
195 StatInt_fstat,
196 StatInt___fxstat,
197 StatInt_fstat64,
198 StatInt___fxstat64,
Dmitry Vyukovba3ae352012-12-07 18:30:40 +0000199 StatInt_open,
Dmitry Vyukovc78839f2012-12-12 11:59:30 +0000200 StatInt_open64,
Dmitry Vyukovba3ae352012-12-07 18:30:40 +0000201 StatInt_creat,
Dmitry Vyukovc78839f2012-12-12 11:59:30 +0000202 StatInt_creat64,
Dmitry Vyukovba3ae352012-12-07 18:30:40 +0000203 StatInt_dup,
204 StatInt_dup2,
205 StatInt_dup3,
Dmitry Vyukov68230a12012-12-07 19:23:59 +0000206 StatInt_eventfd,
Dmitry Vyukov45d43242012-12-18 12:35:31 +0000207 StatInt_signalfd,
208 StatInt_inotify_init,
209 StatInt_inotify_init1,
Dmitry Vyukov68230a12012-12-07 19:23:59 +0000210 StatInt_socket,
Dmitry Vyukov983518e2012-12-14 09:57:42 +0000211 StatInt_socketpair,
Dmitry Vyukov68230a12012-12-07 19:23:59 +0000212 StatInt_connect,
Dmitry Vyukov52c70e52013-02-04 08:06:32 +0000213 StatInt_bind,
214 StatInt_listen,
Dmitry Vyukov68230a12012-12-07 19:23:59 +0000215 StatInt_accept,
216 StatInt_accept4,
217 StatInt_epoll_create,
218 StatInt_epoll_create1,
Dmitry Vyukovddeb2c32012-12-07 15:32:56 +0000219 StatInt_close,
Dmitry Vyukovc78839f2012-12-12 11:59:30 +0000220 StatInt___close,
Dmitry Vyukov03f22482013-02-07 15:27:45 +0000221 StatInt___res_iclose,
Dmitry Vyukovddeb2c32012-12-07 15:32:56 +0000222 StatInt_pipe,
223 StatInt_pipe2,
Kostya Serebryany7ac41482012-05-10 13:48:04 +0000224 StatInt_read,
Kostya Serebryanyc20b3212013-01-18 06:43:13 +0000225 StatInt_prctl,
Kostya Serebryany7ac41482012-05-10 13:48:04 +0000226 StatInt_pread,
227 StatInt_pread64,
228 StatInt_readv,
Evgeniy Stepanovb916e6a2013-06-24 10:43:23 +0000229 StatInt_preadv,
Kostya Serebryany7ac41482012-05-10 13:48:04 +0000230 StatInt_preadv64,
231 StatInt_write,
232 StatInt_pwrite,
233 StatInt_pwrite64,
234 StatInt_writev,
Evgeniy Stepanovb916e6a2013-06-24 10:43:23 +0000235 StatInt_pwritev,
Kostya Serebryany7ac41482012-05-10 13:48:04 +0000236 StatInt_pwritev64,
237 StatInt_send,
238 StatInt_sendmsg,
239 StatInt_recv,
240 StatInt_recvmsg,
241 StatInt_unlink,
242 StatInt_fopen,
Dmitry Vyukovc78839f2012-12-12 11:59:30 +0000243 StatInt_freopen,
244 StatInt_fclose,
Kostya Serebryany7ac41482012-05-10 13:48:04 +0000245 StatInt_fread,
246 StatInt_fwrite,
Dmitry Vyukov0ebfc6f2013-03-20 14:01:10 +0000247 StatInt_fflush,
Dmitry Vyukov5043f052013-03-21 12:50:43 +0000248 StatInt_abort,
Kostya Serebryany7ac41482012-05-10 13:48:04 +0000249 StatInt_puts,
250 StatInt_rmdir,
251 StatInt_opendir,
252 StatInt_epoll_ctl,
253 StatInt_epoll_wait,
Dmitry Vyukovee8ee242012-11-15 17:40:49 +0000254 StatInt_poll,
Evgeniy Stepanove18e3f02013-08-12 13:19:53 +0000255 StatInt_ppoll,
Kostya Serebryany7ac41482012-05-10 13:48:04 +0000256 StatInt_sigaction,
Dmitry Vyukovd91d0672012-05-21 08:26:51 +0000257 StatInt_signal,
Dmitry Vyukovfbeab512013-07-16 11:28:04 +0000258 StatInt_sigsuspend,
Dmitry Vyukovd91d0672012-05-21 08:26:51 +0000259 StatInt_raise,
260 StatInt_kill,
261 StatInt_pthread_kill,
Dmitry Vyukov84853112012-08-31 17:27:49 +0000262 StatInt_sleep,
263 StatInt_usleep,
264 StatInt_nanosleep,
Dmitry Vyukovaad173b2012-11-09 19:55:06 +0000265 StatInt_gettimeofday,
Dmitry Vyukov4554b7a2012-12-18 14:44:44 +0000266 StatInt_fork,
Evgeniy Stepanov996c4f22013-01-18 11:17:23 +0000267 StatInt_vscanf,
268 StatInt_vsscanf,
269 StatInt_vfscanf,
270 StatInt_scanf,
271 StatInt_sscanf,
272 StatInt_fscanf,
Evgeniy Stepanov86edb3b2013-02-12 12:02:49 +0000273 StatInt___isoc99_vscanf,
274 StatInt___isoc99_vsscanf,
275 StatInt___isoc99_vfscanf,
276 StatInt___isoc99_scanf,
277 StatInt___isoc99_sscanf,
278 StatInt___isoc99_fscanf,
Dmitry Vyukov31c05ea2013-01-29 13:05:30 +0000279 StatInt_on_exit,
280 StatInt___cxa_atexit,
Evgeniy Stepanov9358c582013-02-19 09:19:16 +0000281 StatInt_localtime,
282 StatInt_localtime_r,
283 StatInt_gmtime,
284 StatInt_gmtime_r,
285 StatInt_ctime,
286 StatInt_ctime_r,
287 StatInt_asctime,
288 StatInt_asctime_r,
Evgeniy Stepanov7cbbb292013-03-14 11:34:39 +0000289 StatInt_frexp,
290 StatInt_frexpf,
291 StatInt_frexpl,
Evgeniy Stepanove4bdda52013-04-01 14:47:21 +0000292 StatInt_getpwnam,
293 StatInt_getpwuid,
Evgeniy Stepanov103a63e2013-04-23 12:01:20 +0000294 StatInt_getgrnam,
295 StatInt_getgrgid,
Evgeniy Stepanove4bdda52013-04-01 14:47:21 +0000296 StatInt_getpwnam_r,
297 StatInt_getpwuid_r,
Evgeniy Stepanov103a63e2013-04-23 12:01:20 +0000298 StatInt_getgrnam_r,
299 StatInt_getgrgid_r,
Evgeniy Stepanove4bdda52013-04-01 14:47:21 +0000300 StatInt_clock_getres,
301 StatInt_clock_gettime,
302 StatInt_clock_settime,
303 StatInt_getitimer,
304 StatInt_setitimer,
Evgeniy Stepanovcc24ec92013-04-08 08:46:25 +0000305 StatInt_time,
Evgeniy Stepanova1c2a552013-04-09 11:35:13 +0000306 StatInt_glob,
307 StatInt_glob64,
Evgeniy Stepanov897a4ae2013-04-09 14:34:59 +0000308 StatInt_wait,
309 StatInt_waitid,
310 StatInt_waitpid,
311 StatInt_wait3,
312 StatInt_wait4,
Evgeniy Stepanov9530eb72013-04-23 14:05:15 +0000313 StatInt_inet_ntop,
314 StatInt_inet_pton,
Evgeniy Stepanov90a65aa2013-06-24 14:03:13 +0000315 StatInt_inet_aton,
Evgeniy Stepanov447ef192013-05-22 12:50:26 +0000316 StatInt_getaddrinfo,
Evgeniy Stepanov9eedf482013-07-01 13:51:31 +0000317 StatInt_getnameinfo,
Evgeniy Stepanov9f58c5c2013-05-22 13:46:22 +0000318 StatInt_getsockname,
Evgeniy Stepanov0a2cc372013-05-23 11:10:23 +0000319 StatInt_gethostent,
320 StatInt_gethostbyname,
321 StatInt_gethostbyname2,
322 StatInt_gethostbyaddr,
323 StatInt_gethostent_r,
324 StatInt_gethostbyname_r,
325 StatInt_gethostbyname2_r,
326 StatInt_gethostbyaddr_r,
Evgeniy Stepanovf32be422013-05-23 11:38:08 +0000327 StatInt_getsockopt,
Evgeniy Stepanovc87088b2013-05-29 10:03:11 +0000328 StatInt_modf,
329 StatInt_modff,
330 StatInt_modfl,
Evgeniy Stepanovbc33e132013-05-29 11:49:25 +0000331 StatInt_getpeername,
Evgeniy Stepanov745dd0d2013-06-07 13:00:47 +0000332 StatInt_ioctl,
Evgeniy Stepanov359d7fc2013-06-24 14:25:33 +0000333 StatInt_sysinfo,
Evgeniy Stepanovb5cf98f2013-06-26 15:00:53 +0000334 StatInt_readdir,
335 StatInt_readdir64,
336 StatInt_readdir_r,
337 StatInt_readdir64_r,
Evgeniy Stepanov341b9e62013-06-28 11:02:43 +0000338 StatInt_ptrace,
Evgeniy Stepanov3cae6042013-07-02 09:23:45 +0000339 StatInt_setlocale,
Evgeniy Stepanov80144892013-07-02 13:34:44 +0000340 StatInt_getcwd,
341 StatInt_get_current_dir_name,
Evgeniy Stepanovff6c9fb2013-07-04 13:19:41 +0000342 StatInt_strtoimax,
343 StatInt_strtoumax,
344 StatInt_mbstowcs,
345 StatInt_mbsrtowcs,
346 StatInt_mbsnrtowcs,
347 StatInt_wcstombs,
348 StatInt_wcsrtombs,
349 StatInt_wcsnrtombs,
Evgeniy Stepanovea727682013-07-04 14:03:31 +0000350 StatInt_tcgetattr,
Evgeniy Stepanov12eb79d2013-07-09 09:53:37 +0000351 StatInt_realpath,
352 StatInt_canonicalize_file_name,
Evgeniy Stepanov5ec19bc2013-07-30 12:46:59 +0000353 StatInt_confstr,
Evgeniy Stepanov84ba74c2013-08-07 09:10:16 +0000354 StatInt_sched_getaffinity,
Evgeniy Stepanov12049792013-08-08 11:44:05 +0000355 StatInt_strerror,
356 StatInt_strerror_r,
Evgeniy Stepanov224226c2013-08-08 13:57:15 +0000357 StatInt_scandir,
358 StatInt_scandir64,
Evgeniy Stepanovedff34b2013-08-12 11:01:40 +0000359 StatInt_getgroups,
Evgeniy Stepanovc5a38552013-09-24 14:38:22 +0000360 StatInt_wordexp,
Evgeniy Stepanov9a949a82013-09-25 14:47:43 +0000361 StatInt_sigwait,
362 StatInt_sigwaitinfo,
363 StatInt_sigtimedwait,
364 StatInt_sigemptyset,
365 StatInt_sigfillset,
366 StatInt_sigpending,
367 StatInt_sigprocmask,
Evgeniy Stepanov1394be12013-09-27 12:40:23 +0000368 StatInt_backtrace,
369 StatInt_backtrace_symbols,
Dmitry Vyukov4af0f212013-10-03 13:37:17 +0000370 StatInt_dlopen,
371 StatInt_dlclose,
Evgeniy Stepanov4d7297d2013-10-18 09:41:43 +0000372 StatInt_getmntent,
373 StatInt_getmntent_r,
Evgeniy Stepanov5cee73e2013-10-18 11:14:16 +0000374 StatInt_statfs,
375 StatInt_statfs64,
376 StatInt_fstatfs,
377 StatInt_fstatfs64,
378 StatInt_statvfs,
379 StatInt_statvfs64,
380 StatInt_fstatvfs,
381 StatInt_fstatvfs64,
Evgeniy Stepanov285d4582013-10-22 12:24:48 +0000382 StatInt_initgroups,
Evgeniy Stepanov369a9a62013-10-23 13:57:47 +0000383 StatInt_ether_ntoa,
384 StatInt_ether_aton,
385 StatInt_ether_ntoa_r,
386 StatInt_ether_aton_r,
387 StatInt_ether_ntohost,
388 StatInt_ether_hostton,
389 StatInt_ether_line,
Kostya Serebryany7ac41482012-05-10 13:48:04 +0000390
391 // Dynamic annotations.
392 StatAnnotation,
393 StatAnnotateHappensBefore,
394 StatAnnotateHappensAfter,
395 StatAnnotateCondVarSignal,
396 StatAnnotateCondVarSignalAll,
397 StatAnnotateMutexIsNotPHB,
398 StatAnnotateCondVarWait,
399 StatAnnotateRWLockCreate,
Dmitry Vyukovc20e9ba2012-08-16 13:29:41 +0000400 StatAnnotateRWLockCreateStatic,
Kostya Serebryany7ac41482012-05-10 13:48:04 +0000401 StatAnnotateRWLockDestroy,
402 StatAnnotateRWLockAcquired,
403 StatAnnotateRWLockReleased,
404 StatAnnotateTraceMemory,
405 StatAnnotateFlushState,
406 StatAnnotateNewMemory,
407 StatAnnotateNoOp,
408 StatAnnotateFlushExpectedRaces,
409 StatAnnotateEnableRaceDetection,
410 StatAnnotateMutexIsUsedAsCondVar,
411 StatAnnotatePCQGet,
412 StatAnnotatePCQPut,
413 StatAnnotatePCQDestroy,
414 StatAnnotatePCQCreate,
415 StatAnnotateExpectRace,
416 StatAnnotateBenignRaceSized,
417 StatAnnotateBenignRace,
418 StatAnnotateIgnoreReadsBegin,
419 StatAnnotateIgnoreReadsEnd,
420 StatAnnotateIgnoreWritesBegin,
421 StatAnnotateIgnoreWritesEnd,
Dmitry Vyukove1ddbf92013-10-10 15:58:12 +0000422 StatAnnotateIgnoreSyncBegin,
423 StatAnnotateIgnoreSyncEnd,
Kostya Serebryany7ac41482012-05-10 13:48:04 +0000424 StatAnnotatePublishMemoryRange,
425 StatAnnotateUnpublishMemoryRange,
426 StatAnnotateThreadName,
427
428 // Internal mutex contentionz.
429 StatMtxTotal,
430 StatMtxTrace,
431 StatMtxThreads,
432 StatMtxReport,
433 StatMtxSyncVar,
434 StatMtxSyncTab,
435 StatMtxSlab,
436 StatMtxAnnotations,
437 StatMtxAtExit,
Dmitry Vyukovad9da372012-12-06 12:16:15 +0000438 StatMtxMBlock,
Dmitry Vyukovf4e4f932012-12-21 11:30:14 +0000439 StatMtxJavaMBlock,
Dmitry Vyukov52c70e52013-02-04 08:06:32 +0000440 StatMtxFD,
Kostya Serebryany7ac41482012-05-10 13:48:04 +0000441
442 // This must be the last.
Alexey Samsonov2135d8a2012-09-13 11:54:41 +0000443 StatCnt
Kostya Serebryany7ac41482012-05-10 13:48:04 +0000444};
445
446} // namespace __tsan
447
448#endif // TSAN_STAT_H