blob: 0cd55ceaf2552800fb341c29e9a9e982a41f0fe9 [file] [log] [blame]
Kostya Serebryany4ad375f2012-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,
30 StatShadowProcessed,
31 StatShadowZero,
32 StatShadowNonZero, // Derived.
33 StatShadowSameSize,
34 StatShadowIntersect,
35 StatShadowNotIntersect,
36 StatShadowSameThread,
37 StatShadowAnotherThread,
38 StatShadowReplace,
39
40 // Func processing.
41 StatFuncEnter,
42 StatFuncExit,
43
44 // Trace processing.
45 StatEvents,
46
47 // Threads.
48 StatThreadCreate,
49 StatThreadFinish,
50 StatThreadReuse,
51 StatThreadMaxTid,
52 StatThreadMaxAlive,
53
54 // Mutexes.
55 StatMutexCreate,
56 StatMutexDestroy,
57 StatMutexLock,
58 StatMutexUnlock,
59 StatMutexRecLock,
60 StatMutexRecUnlock,
61 StatMutexReadLock,
62 StatMutexReadUnlock,
63
64 // Synchronization.
65 StatSyncCreated,
66 StatSyncDestroyed,
67 StatSyncAcquire,
68 StatSyncRelease,
69
70 // Atomics.
71 StatAtomic,
72 StatAtomicLoad,
73 StatAtomicStore,
74 StatAtomicExchange,
75 StatAtomicFetchAdd,
Dmitry Vyukovb96a7b52012-10-04 10:08:23 +000076 StatAtomicFetchSub,
Dmitry Vyukov572c5b22012-05-14 15:33:00 +000077 StatAtomicFetchAnd,
78 StatAtomicFetchOr,
79 StatAtomicFetchXor,
Dmitry Vyukov3b450122012-11-26 09:42:56 +000080 StatAtomicFetchNand,
Kostya Serebryany4ad375f2012-05-10 13:48:04 +000081 StatAtomicCAS,
82 StatAtomicFence,
83 StatAtomicRelaxed,
84 StatAtomicConsume,
85 StatAtomicAcquire,
86 StatAtomicRelease,
87 StatAtomicAcq_Rel,
88 StatAtomicSeq_Cst,
89 StatAtomic1,
90 StatAtomic2,
91 StatAtomic4,
92 StatAtomic8,
Dmitry Vyukov59d58662012-11-27 07:41:27 +000093 StatAtomic16,
Kostya Serebryany4ad375f2012-05-10 13:48:04 +000094
95 // Interceptors.
96 StatInterceptor,
Dmitry Vyukov95a5c5c2012-05-31 18:03:59 +000097 StatInt_longjmp,
98 StatInt_siglongjmp,
Kostya Serebryany4ad375f2012-05-10 13:48:04 +000099 StatInt_malloc,
Dmitry Vyukov1450ac62012-11-30 17:27:58 +0000100 StatInt___libc_memalign,
Kostya Serebryany4ad375f2012-05-10 13:48:04 +0000101 StatInt_calloc,
102 StatInt_realloc,
103 StatInt_free,
104 StatInt_cfree,
105 StatInt_mmap,
106 StatInt_mmap64,
107 StatInt_munmap,
108 StatInt_memalign,
109 StatInt_valloc,
110 StatInt_pvalloc,
111 StatInt_posix_memalign,
112 StatInt__Znwm,
113 StatInt__ZnwmRKSt9nothrow_t,
114 StatInt__Znam,
115 StatInt__ZnamRKSt9nothrow_t,
116 StatInt__ZdlPv,
117 StatInt__ZdlPvRKSt9nothrow_t,
118 StatInt__ZdaPv,
119 StatInt__ZdaPvRKSt9nothrow_t,
120 StatInt_strlen,
121 StatInt_memset,
122 StatInt_memcpy,
123 StatInt_strcmp,
124 StatInt_memchr,
125 StatInt_memrchr,
126 StatInt_memmove,
127 StatInt_memcmp,
128 StatInt_strchr,
129 StatInt_strchrnul,
130 StatInt_strrchr,
131 StatInt_strncmp,
132 StatInt_strcpy,
133 StatInt_strncpy,
134 StatInt_strstr,
135 StatInt_atexit,
136 StatInt___cxa_guard_acquire,
137 StatInt___cxa_guard_release,
Dmitry Vyukovc446aa02012-12-05 12:10:22 +0000138 StatInt___cxa_guard_abort,
Kostya Serebryany4ad375f2012-05-10 13:48:04 +0000139 StatInt_pthread_create,
140 StatInt_pthread_join,
141 StatInt_pthread_detach,
142 StatInt_pthread_mutex_init,
143 StatInt_pthread_mutex_destroy,
144 StatInt_pthread_mutex_lock,
145 StatInt_pthread_mutex_trylock,
146 StatInt_pthread_mutex_timedlock,
147 StatInt_pthread_mutex_unlock,
148 StatInt_pthread_spin_init,
149 StatInt_pthread_spin_destroy,
150 StatInt_pthread_spin_lock,
151 StatInt_pthread_spin_trylock,
152 StatInt_pthread_spin_unlock,
153 StatInt_pthread_rwlock_init,
154 StatInt_pthread_rwlock_destroy,
155 StatInt_pthread_rwlock_rdlock,
156 StatInt_pthread_rwlock_tryrdlock,
157 StatInt_pthread_rwlock_timedrdlock,
158 StatInt_pthread_rwlock_wrlock,
159 StatInt_pthread_rwlock_trywrlock,
160 StatInt_pthread_rwlock_timedwrlock,
161 StatInt_pthread_rwlock_unlock,
162 StatInt_pthread_cond_init,
163 StatInt_pthread_cond_destroy,
164 StatInt_pthread_cond_signal,
165 StatInt_pthread_cond_broadcast,
166 StatInt_pthread_cond_wait,
167 StatInt_pthread_cond_timedwait,
168 StatInt_pthread_barrier_init,
169 StatInt_pthread_barrier_destroy,
170 StatInt_pthread_barrier_wait,
171 StatInt_pthread_once,
172 StatInt_sem_init,
173 StatInt_sem_destroy,
174 StatInt_sem_wait,
175 StatInt_sem_trywait,
176 StatInt_sem_timedwait,
177 StatInt_sem_post,
178 StatInt_sem_getvalue,
Dmitry Vyukovb130fc32013-01-29 09:23:09 +0000179 StatInt_stat,
180 StatInt___xstat,
181 StatInt_stat64,
182 StatInt___xstat64,
183 StatInt_lstat,
184 StatInt___lxstat,
185 StatInt_lstat64,
186 StatInt___lxstat64,
187 StatInt_fstat,
188 StatInt___fxstat,
189 StatInt_fstat64,
190 StatInt___fxstat64,
Dmitry Vyukov04580512012-12-07 18:30:40 +0000191 StatInt_open,
Dmitry Vyukov60c14ce2012-12-12 11:59:30 +0000192 StatInt_open64,
Dmitry Vyukov04580512012-12-07 18:30:40 +0000193 StatInt_creat,
Dmitry Vyukov60c14ce2012-12-12 11:59:30 +0000194 StatInt_creat64,
Dmitry Vyukov04580512012-12-07 18:30:40 +0000195 StatInt_dup,
196 StatInt_dup2,
197 StatInt_dup3,
Dmitry Vyukov54b87402012-12-07 19:23:59 +0000198 StatInt_eventfd,
Dmitry Vyukovd5091792012-12-18 12:35:31 +0000199 StatInt_signalfd,
200 StatInt_inotify_init,
201 StatInt_inotify_init1,
Dmitry Vyukov54b87402012-12-07 19:23:59 +0000202 StatInt_socket,
Dmitry Vyukove0c37642012-12-14 09:57:42 +0000203 StatInt_socketpair,
Dmitry Vyukov54b87402012-12-07 19:23:59 +0000204 StatInt_connect,
Dmitry Vyukov606de602013-02-04 08:06:32 +0000205 StatInt_bind,
206 StatInt_listen,
Dmitry Vyukov54b87402012-12-07 19:23:59 +0000207 StatInt_accept,
208 StatInt_accept4,
209 StatInt_epoll_create,
210 StatInt_epoll_create1,
Dmitry Vyukov4e7c0f92012-12-07 15:32:56 +0000211 StatInt_close,
Dmitry Vyukov60c14ce2012-12-12 11:59:30 +0000212 StatInt___close,
Dmitry Vyukoveffd98b2013-02-07 15:27:45 +0000213 StatInt___res_iclose,
Dmitry Vyukov4e7c0f92012-12-07 15:32:56 +0000214 StatInt_pipe,
215 StatInt_pipe2,
Kostya Serebryany4ad375f2012-05-10 13:48:04 +0000216 StatInt_read,
Kostya Serebryany69fe0ba2013-01-18 06:43:13 +0000217 StatInt_prctl,
Kostya Serebryany4ad375f2012-05-10 13:48:04 +0000218 StatInt_pread,
219 StatInt_pread64,
220 StatInt_readv,
221 StatInt_preadv64,
222 StatInt_write,
223 StatInt_pwrite,
224 StatInt_pwrite64,
225 StatInt_writev,
226 StatInt_pwritev64,
227 StatInt_send,
228 StatInt_sendmsg,
229 StatInt_recv,
230 StatInt_recvmsg,
231 StatInt_unlink,
232 StatInt_fopen,
Dmitry Vyukov60c14ce2012-12-12 11:59:30 +0000233 StatInt_freopen,
234 StatInt_fclose,
Kostya Serebryany4ad375f2012-05-10 13:48:04 +0000235 StatInt_fread,
236 StatInt_fwrite,
237 StatInt_puts,
238 StatInt_rmdir,
239 StatInt_opendir,
240 StatInt_epoll_ctl,
241 StatInt_epoll_wait,
Dmitry Vyukov262465c2012-11-15 17:40:49 +0000242 StatInt_poll,
Kostya Serebryany4ad375f2012-05-10 13:48:04 +0000243 StatInt_sigaction,
Dmitry Vyukov98953b72012-05-21 08:26:51 +0000244 StatInt_signal,
245 StatInt_raise,
246 StatInt_kill,
247 StatInt_pthread_kill,
Dmitry Vyukov318f7772012-08-31 17:27:49 +0000248 StatInt_sleep,
249 StatInt_usleep,
250 StatInt_nanosleep,
Dmitry Vyukov317f3922012-11-09 19:55:06 +0000251 StatInt_gettimeofday,
Dmitry Vyukov44e1beae2012-12-18 14:44:44 +0000252 StatInt_fork,
Evgeniy Stepanov222076e2013-01-18 11:17:23 +0000253 StatInt_vscanf,
254 StatInt_vsscanf,
255 StatInt_vfscanf,
256 StatInt_scanf,
257 StatInt_sscanf,
258 StatInt_fscanf,
Evgeniy Stepanovd8cfb992013-02-12 12:02:49 +0000259 StatInt___isoc99_vscanf,
260 StatInt___isoc99_vsscanf,
261 StatInt___isoc99_vfscanf,
262 StatInt___isoc99_scanf,
263 StatInt___isoc99_sscanf,
264 StatInt___isoc99_fscanf,
Dmitry Vyukov4399d922013-01-29 13:05:30 +0000265 StatInt_on_exit,
266 StatInt___cxa_atexit,
Kostya Serebryany4ad375f2012-05-10 13:48:04 +0000267
268 // Dynamic annotations.
269 StatAnnotation,
270 StatAnnotateHappensBefore,
271 StatAnnotateHappensAfter,
272 StatAnnotateCondVarSignal,
273 StatAnnotateCondVarSignalAll,
274 StatAnnotateMutexIsNotPHB,
275 StatAnnotateCondVarWait,
276 StatAnnotateRWLockCreate,
Dmitry Vyukov4723e6b2012-08-16 13:29:41 +0000277 StatAnnotateRWLockCreateStatic,
Kostya Serebryany4ad375f2012-05-10 13:48:04 +0000278 StatAnnotateRWLockDestroy,
279 StatAnnotateRWLockAcquired,
280 StatAnnotateRWLockReleased,
281 StatAnnotateTraceMemory,
282 StatAnnotateFlushState,
283 StatAnnotateNewMemory,
284 StatAnnotateNoOp,
285 StatAnnotateFlushExpectedRaces,
286 StatAnnotateEnableRaceDetection,
287 StatAnnotateMutexIsUsedAsCondVar,
288 StatAnnotatePCQGet,
289 StatAnnotatePCQPut,
290 StatAnnotatePCQDestroy,
291 StatAnnotatePCQCreate,
292 StatAnnotateExpectRace,
293 StatAnnotateBenignRaceSized,
294 StatAnnotateBenignRace,
295 StatAnnotateIgnoreReadsBegin,
296 StatAnnotateIgnoreReadsEnd,
297 StatAnnotateIgnoreWritesBegin,
298 StatAnnotateIgnoreWritesEnd,
299 StatAnnotatePublishMemoryRange,
300 StatAnnotateUnpublishMemoryRange,
301 StatAnnotateThreadName,
302
303 // Internal mutex contentionz.
304 StatMtxTotal,
305 StatMtxTrace,
306 StatMtxThreads,
307 StatMtxReport,
308 StatMtxSyncVar,
309 StatMtxSyncTab,
310 StatMtxSlab,
311 StatMtxAnnotations,
312 StatMtxAtExit,
Dmitry Vyukovfd5ebcd2012-12-06 12:16:15 +0000313 StatMtxMBlock,
Dmitry Vyukov22be55e2012-12-21 11:30:14 +0000314 StatMtxJavaMBlock,
Dmitry Vyukov606de602013-02-04 08:06:32 +0000315 StatMtxFD,
Kostya Serebryany4ad375f2012-05-10 13:48:04 +0000316
317 // This must be the last.
Alexey Samsonov046248c2012-09-13 11:54:41 +0000318 StatCnt
Kostya Serebryany4ad375f2012-05-10 13:48:04 +0000319};
320
321} // namespace __tsan
322
323#endif // TSAN_STAT_H