Mercurial > hg > CbC > CbC_gcc
comparison libsanitizer/tsan/tsan_mman.h @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | |
children | 1830386684a0 |
comparison
equal
deleted
inserted
replaced
68:561a7518be6b | 111:04ced10e8804 |
---|---|
1 //===-- tsan_mman.h ---------------------------------------------*- C++ -*-===// | |
2 // | |
3 // This file is distributed under the University of Illinois Open Source | |
4 // License. See LICENSE.TXT for details. | |
5 // | |
6 //===----------------------------------------------------------------------===// | |
7 // | |
8 // This file is a part of ThreadSanitizer (TSan), a race detector. | |
9 // | |
10 //===----------------------------------------------------------------------===// | |
11 #ifndef TSAN_MMAN_H | |
12 #define TSAN_MMAN_H | |
13 | |
14 #include "tsan_defs.h" | |
15 | |
16 namespace __tsan { | |
17 | |
18 const uptr kDefaultAlignment = 16; | |
19 | |
20 void InitializeAllocator(); | |
21 void InitializeAllocatorLate(); | |
22 void ReplaceSystemMalloc(); | |
23 void AllocatorProcStart(Processor *proc); | |
24 void AllocatorProcFinish(Processor *proc); | |
25 void AllocatorPrintStats(); | |
26 | |
27 // For user allocations. | |
28 void *user_alloc_internal(ThreadState *thr, uptr pc, uptr sz, | |
29 uptr align = kDefaultAlignment, bool signal = true); | |
30 // Does not accept NULL. | |
31 void user_free(ThreadState *thr, uptr pc, void *p, bool signal = true); | |
32 // Interceptor implementations. | |
33 void *user_alloc(ThreadState *thr, uptr pc, uptr sz); | |
34 void *user_calloc(ThreadState *thr, uptr pc, uptr sz, uptr n); | |
35 void *user_realloc(ThreadState *thr, uptr pc, void *p, uptr sz); | |
36 void *user_memalign(ThreadState *thr, uptr pc, uptr align, uptr sz); | |
37 int user_posix_memalign(ThreadState *thr, uptr pc, void **memptr, uptr align, | |
38 uptr sz); | |
39 void *user_aligned_alloc(ThreadState *thr, uptr pc, uptr align, uptr sz); | |
40 void *user_valloc(ThreadState *thr, uptr pc, uptr sz); | |
41 void *user_pvalloc(ThreadState *thr, uptr pc, uptr sz); | |
42 uptr user_alloc_usable_size(const void *p); | |
43 | |
44 // Invoking malloc/free hooks that may be installed by the user. | |
45 void invoke_malloc_hook(void *ptr, uptr size); | |
46 void invoke_free_hook(void *ptr); | |
47 | |
48 enum MBlockType { | |
49 MBlockScopedBuf, | |
50 MBlockString, | |
51 MBlockStackTrace, | |
52 MBlockShadowStack, | |
53 MBlockSync, | |
54 MBlockClock, | |
55 MBlockThreadContex, | |
56 MBlockDeadInfo, | |
57 MBlockRacyStacks, | |
58 MBlockRacyAddresses, | |
59 MBlockAtExit, | |
60 MBlockFlag, | |
61 MBlockReport, | |
62 MBlockReportMop, | |
63 MBlockReportThread, | |
64 MBlockReportMutex, | |
65 MBlockReportLoc, | |
66 MBlockReportStack, | |
67 MBlockSuppression, | |
68 MBlockExpectRace, | |
69 MBlockSignal, | |
70 MBlockJmpBuf, | |
71 | |
72 // This must be the last. | |
73 MBlockTypeCount | |
74 }; | |
75 | |
76 // For internal data structures. | |
77 void *internal_alloc(MBlockType typ, uptr sz); | |
78 void internal_free(void *p); | |
79 | |
80 template<typename T> | |
81 void DestroyAndFree(T *&p) { | |
82 p->~T(); | |
83 internal_free(p); | |
84 p = 0; | |
85 } | |
86 | |
87 } // namespace __tsan | |
88 #endif // TSAN_MMAN_H |