blob: 68aae3fa5b674f0c37eef2aa89f5a515ce549425 [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,
140 StatInt_atexit,
141 StatInt___cxa_guard_acquire,
142 StatInt___cxa_guard_release,
Dmitry Vyukov1ffeded2012-12-05 12:10:22 +0000143 StatInt___cxa_guard_abort,
Kostya Serebryany7ac41482012-05-10 13:48:04 +0000144 StatInt_pthread_create,
145 StatInt_pthread_join,
146 StatInt_pthread_detach,
147 StatInt_pthread_mutex_init,
148 StatInt_pthread_mutex_destroy,
149 StatInt_pthread_mutex_lock,
150 StatInt_pthread_mutex_trylock,
151 StatInt_pthread_mutex_timedlock,
152 StatInt_pthread_mutex_unlock,
153 StatInt_pthread_spin_init,
154 StatInt_pthread_spin_destroy,
155 StatInt_pthread_spin_lock,
156 StatInt_pthread_spin_trylock,
157 StatInt_pthread_spin_unlock,
158 StatInt_pthread_rwlock_init,
159 StatInt_pthread_rwlock_destroy,
160 StatInt_pthread_rwlock_rdlock,
161 StatInt_pthread_rwlock_tryrdlock,
162 StatInt_pthread_rwlock_timedrdlock,
163 StatInt_pthread_rwlock_wrlock,
164 StatInt_pthread_rwlock_trywrlock,
165 StatInt_pthread_rwlock_timedwrlock,
166 StatInt_pthread_rwlock_unlock,
167 StatInt_pthread_cond_init,
168 StatInt_pthread_cond_destroy,
169 StatInt_pthread_cond_signal,
170 StatInt_pthread_cond_broadcast,
171 StatInt_pthread_cond_wait,
172 StatInt_pthread_cond_timedwait,
173 StatInt_pthread_barrier_init,
174 StatInt_pthread_barrier_destroy,
175 StatInt_pthread_barrier_wait,
176 StatInt_pthread_once,
Evgeniy Stepanov56d34722013-05-21 08:12:08 +0000177 StatInt_pthread_getschedparam,
Kostya Serebryany7ac41482012-05-10 13:48:04 +0000178 StatInt_sem_init,
179 StatInt_sem_destroy,
180 StatInt_sem_wait,
181 StatInt_sem_trywait,
182 StatInt_sem_timedwait,
183 StatInt_sem_post,
184 StatInt_sem_getvalue,
Dmitry Vyukov61ba1b52013-01-29 09:23:09 +0000185 StatInt_stat,
186 StatInt___xstat,
187 StatInt_stat64,
188 StatInt___xstat64,
189 StatInt_lstat,
190 StatInt___lxstat,
191 StatInt_lstat64,
192 StatInt___lxstat64,
193 StatInt_fstat,
194 StatInt___fxstat,
195 StatInt_fstat64,
196 StatInt___fxstat64,
Dmitry Vyukovba3ae352012-12-07 18:30:40 +0000197 StatInt_open,
Dmitry Vyukovc78839f2012-12-12 11:59:30 +0000198 StatInt_open64,
Dmitry Vyukovba3ae352012-12-07 18:30:40 +0000199 StatInt_creat,
Dmitry Vyukovc78839f2012-12-12 11:59:30 +0000200 StatInt_creat64,
Dmitry Vyukovba3ae352012-12-07 18:30:40 +0000201 StatInt_dup,
202 StatInt_dup2,
203 StatInt_dup3,
Dmitry Vyukov68230a12012-12-07 19:23:59 +0000204 StatInt_eventfd,
Dmitry Vyukov45d43242012-12-18 12:35:31 +0000205 StatInt_signalfd,
206 StatInt_inotify_init,
207 StatInt_inotify_init1,
Dmitry Vyukov68230a12012-12-07 19:23:59 +0000208 StatInt_socket,
Dmitry Vyukov983518e2012-12-14 09:57:42 +0000209 StatInt_socketpair,
Dmitry Vyukov68230a12012-12-07 19:23:59 +0000210 StatInt_connect,
Dmitry Vyukov52c70e52013-02-04 08:06:32 +0000211 StatInt_bind,
212 StatInt_listen,
Dmitry Vyukov68230a12012-12-07 19:23:59 +0000213 StatInt_accept,
214 StatInt_accept4,
215 StatInt_epoll_create,
216 StatInt_epoll_create1,
Dmitry Vyukovddeb2c32012-12-07 15:32:56 +0000217 StatInt_close,
Dmitry Vyukovc78839f2012-12-12 11:59:30 +0000218 StatInt___close,
Dmitry Vyukov03f22482013-02-07 15:27:45 +0000219 StatInt___res_iclose,
Dmitry Vyukovddeb2c32012-12-07 15:32:56 +0000220 StatInt_pipe,
221 StatInt_pipe2,
Kostya Serebryany7ac41482012-05-10 13:48:04 +0000222 StatInt_read,
Kostya Serebryanyc20b3212013-01-18 06:43:13 +0000223 StatInt_prctl,
Kostya Serebryany7ac41482012-05-10 13:48:04 +0000224 StatInt_pread,
225 StatInt_pread64,
226 StatInt_readv,
Evgeniy Stepanovb916e6a2013-06-24 10:43:23 +0000227 StatInt_preadv,
Kostya Serebryany7ac41482012-05-10 13:48:04 +0000228 StatInt_preadv64,
229 StatInt_write,
230 StatInt_pwrite,
231 StatInt_pwrite64,
232 StatInt_writev,
Evgeniy Stepanovb916e6a2013-06-24 10:43:23 +0000233 StatInt_pwritev,
Kostya Serebryany7ac41482012-05-10 13:48:04 +0000234 StatInt_pwritev64,
235 StatInt_send,
236 StatInt_sendmsg,
237 StatInt_recv,
238 StatInt_recvmsg,
239 StatInt_unlink,
240 StatInt_fopen,
Dmitry Vyukovc78839f2012-12-12 11:59:30 +0000241 StatInt_freopen,
242 StatInt_fclose,
Kostya Serebryany7ac41482012-05-10 13:48:04 +0000243 StatInt_fread,
244 StatInt_fwrite,
Dmitry Vyukov0ebfc6f2013-03-20 14:01:10 +0000245 StatInt_fflush,
Dmitry Vyukov5043f052013-03-21 12:50:43 +0000246 StatInt_abort,
Kostya Serebryany7ac41482012-05-10 13:48:04 +0000247 StatInt_puts,
248 StatInt_rmdir,
249 StatInt_opendir,
250 StatInt_epoll_ctl,
251 StatInt_epoll_wait,
Dmitry Vyukovee8ee242012-11-15 17:40:49 +0000252 StatInt_poll,
Kostya Serebryany7ac41482012-05-10 13:48:04 +0000253 StatInt_sigaction,
Dmitry Vyukovd91d0672012-05-21 08:26:51 +0000254 StatInt_signal,
Dmitry Vyukovfbeab512013-07-16 11:28:04 +0000255 StatInt_sigsuspend,
Dmitry Vyukovd91d0672012-05-21 08:26:51 +0000256 StatInt_raise,
257 StatInt_kill,
258 StatInt_pthread_kill,
Dmitry Vyukov84853112012-08-31 17:27:49 +0000259 StatInt_sleep,
260 StatInt_usleep,
261 StatInt_nanosleep,
Dmitry Vyukovaad173b2012-11-09 19:55:06 +0000262 StatInt_gettimeofday,
Dmitry Vyukov4554b7a2012-12-18 14:44:44 +0000263 StatInt_fork,
Evgeniy Stepanov996c4f22013-01-18 11:17:23 +0000264 StatInt_vscanf,
265 StatInt_vsscanf,
266 StatInt_vfscanf,
267 StatInt_scanf,
268 StatInt_sscanf,
269 StatInt_fscanf,
Evgeniy Stepanov86edb3b2013-02-12 12:02:49 +0000270 StatInt___isoc99_vscanf,
271 StatInt___isoc99_vsscanf,
272 StatInt___isoc99_vfscanf,
273 StatInt___isoc99_scanf,
274 StatInt___isoc99_sscanf,
275 StatInt___isoc99_fscanf,
Dmitry Vyukov31c05ea2013-01-29 13:05:30 +0000276 StatInt_on_exit,
277 StatInt___cxa_atexit,
Evgeniy Stepanov9358c582013-02-19 09:19:16 +0000278 StatInt_localtime,
279 StatInt_localtime_r,
280 StatInt_gmtime,
281 StatInt_gmtime_r,
282 StatInt_ctime,
283 StatInt_ctime_r,
284 StatInt_asctime,
285 StatInt_asctime_r,
Evgeniy Stepanov7cbbb292013-03-14 11:34:39 +0000286 StatInt_frexp,
287 StatInt_frexpf,
288 StatInt_frexpl,
Evgeniy Stepanove4bdda52013-04-01 14:47:21 +0000289 StatInt_getpwnam,
290 StatInt_getpwuid,
Evgeniy Stepanov103a63e2013-04-23 12:01:20 +0000291 StatInt_getgrnam,
292 StatInt_getgrgid,
Evgeniy Stepanove4bdda52013-04-01 14:47:21 +0000293 StatInt_getpwnam_r,
294 StatInt_getpwuid_r,
Evgeniy Stepanov103a63e2013-04-23 12:01:20 +0000295 StatInt_getgrnam_r,
296 StatInt_getgrgid_r,
Evgeniy Stepanove4bdda52013-04-01 14:47:21 +0000297 StatInt_clock_getres,
298 StatInt_clock_gettime,
299 StatInt_clock_settime,
300 StatInt_getitimer,
301 StatInt_setitimer,
Evgeniy Stepanovcc24ec92013-04-08 08:46:25 +0000302 StatInt_time,
Evgeniy Stepanova1c2a552013-04-09 11:35:13 +0000303 StatInt_glob,
304 StatInt_glob64,
Evgeniy Stepanov897a4ae2013-04-09 14:34:59 +0000305 StatInt_wait,
306 StatInt_waitid,
307 StatInt_waitpid,
308 StatInt_wait3,
309 StatInt_wait4,
Evgeniy Stepanov9530eb72013-04-23 14:05:15 +0000310 StatInt_inet_ntop,
311 StatInt_inet_pton,
Evgeniy Stepanov90a65aa2013-06-24 14:03:13 +0000312 StatInt_inet_aton,
Evgeniy Stepanov447ef192013-05-22 12:50:26 +0000313 StatInt_getaddrinfo,
Evgeniy Stepanov9eedf482013-07-01 13:51:31 +0000314 StatInt_getnameinfo,
Evgeniy Stepanov9f58c5c2013-05-22 13:46:22 +0000315 StatInt_getsockname,
Evgeniy Stepanov0a2cc372013-05-23 11:10:23 +0000316 StatInt_gethostent,
317 StatInt_gethostbyname,
318 StatInt_gethostbyname2,
319 StatInt_gethostbyaddr,
320 StatInt_gethostent_r,
321 StatInt_gethostbyname_r,
322 StatInt_gethostbyname2_r,
323 StatInt_gethostbyaddr_r,
Evgeniy Stepanovf32be422013-05-23 11:38:08 +0000324 StatInt_getsockopt,
Evgeniy Stepanovc87088b2013-05-29 10:03:11 +0000325 StatInt_modf,
326 StatInt_modff,
327 StatInt_modfl,
Evgeniy Stepanovbc33e132013-05-29 11:49:25 +0000328 StatInt_getpeername,
Evgeniy Stepanov745dd0d2013-06-07 13:00:47 +0000329 StatInt_ioctl,
Evgeniy Stepanov359d7fc2013-06-24 14:25:33 +0000330 StatInt_sysinfo,
Evgeniy Stepanovb5cf98f2013-06-26 15:00:53 +0000331 StatInt_readdir,
332 StatInt_readdir64,
333 StatInt_readdir_r,
334 StatInt_readdir64_r,
Evgeniy Stepanov341b9e62013-06-28 11:02:43 +0000335 StatInt_ptrace,
Evgeniy Stepanov3cae6042013-07-02 09:23:45 +0000336 StatInt_setlocale,
Evgeniy Stepanov80144892013-07-02 13:34:44 +0000337 StatInt_getcwd,
338 StatInt_get_current_dir_name,
Evgeniy Stepanovff6c9fb2013-07-04 13:19:41 +0000339 StatInt_strtoimax,
340 StatInt_strtoumax,
341 StatInt_mbstowcs,
342 StatInt_mbsrtowcs,
343 StatInt_mbsnrtowcs,
344 StatInt_wcstombs,
345 StatInt_wcsrtombs,
346 StatInt_wcsnrtombs,
Evgeniy Stepanovea727682013-07-04 14:03:31 +0000347 StatInt_tcgetattr,
Evgeniy Stepanov12eb79d2013-07-09 09:53:37 +0000348 StatInt_realpath,
349 StatInt_canonicalize_file_name,
Evgeniy Stepanov5ec19bc2013-07-30 12:46:59 +0000350 StatInt_confstr,
Evgeniy Stepanov84ba74c2013-08-07 09:10:16 +0000351 StatInt_sched_getaffinity,
Evgeniy Stepanov12049792013-08-08 11:44:05 +0000352 StatInt_strerror,
353 StatInt_strerror_r,
Kostya Serebryany7ac41482012-05-10 13:48:04 +0000354
355 // Dynamic annotations.
356 StatAnnotation,
357 StatAnnotateHappensBefore,
358 StatAnnotateHappensAfter,
359 StatAnnotateCondVarSignal,
360 StatAnnotateCondVarSignalAll,
361 StatAnnotateMutexIsNotPHB,
362 StatAnnotateCondVarWait,
363 StatAnnotateRWLockCreate,
Dmitry Vyukovc20e9ba2012-08-16 13:29:41 +0000364 StatAnnotateRWLockCreateStatic,
Kostya Serebryany7ac41482012-05-10 13:48:04 +0000365 StatAnnotateRWLockDestroy,
366 StatAnnotateRWLockAcquired,
367 StatAnnotateRWLockReleased,
368 StatAnnotateTraceMemory,
369 StatAnnotateFlushState,
370 StatAnnotateNewMemory,
371 StatAnnotateNoOp,
372 StatAnnotateFlushExpectedRaces,
373 StatAnnotateEnableRaceDetection,
374 StatAnnotateMutexIsUsedAsCondVar,
375 StatAnnotatePCQGet,
376 StatAnnotatePCQPut,
377 StatAnnotatePCQDestroy,
378 StatAnnotatePCQCreate,
379 StatAnnotateExpectRace,
380 StatAnnotateBenignRaceSized,
381 StatAnnotateBenignRace,
382 StatAnnotateIgnoreReadsBegin,
383 StatAnnotateIgnoreReadsEnd,
384 StatAnnotateIgnoreWritesBegin,
385 StatAnnotateIgnoreWritesEnd,
386 StatAnnotatePublishMemoryRange,
387 StatAnnotateUnpublishMemoryRange,
388 StatAnnotateThreadName,
389
390 // Internal mutex contentionz.
391 StatMtxTotal,
392 StatMtxTrace,
393 StatMtxThreads,
394 StatMtxReport,
395 StatMtxSyncVar,
396 StatMtxSyncTab,
397 StatMtxSlab,
398 StatMtxAnnotations,
399 StatMtxAtExit,
Dmitry Vyukovad9da372012-12-06 12:16:15 +0000400 StatMtxMBlock,
Dmitry Vyukovf4e4f932012-12-21 11:30:14 +0000401 StatMtxJavaMBlock,
Dmitry Vyukov52c70e52013-02-04 08:06:32 +0000402 StatMtxFD,
Kostya Serebryany7ac41482012-05-10 13:48:04 +0000403
404 // This must be the last.
Alexey Samsonov2135d8a2012-09-13 11:54:41 +0000405 StatCnt
Kostya Serebryany7ac41482012-05-10 13:48:04 +0000406};
407
408} // namespace __tsan
409
410#endif // TSAN_STAT_H