summaryrefslogtreecommitdiff
path: root/lib/tsan/rtl/tsan_mman.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/tsan/rtl/tsan_mman.h')
-rw-r--r--lib/tsan/rtl/tsan_mman.h58
1 files changed, 12 insertions, 46 deletions
diff --git a/lib/tsan/rtl/tsan_mman.h b/lib/tsan/rtl/tsan_mman.h
index 53f147e40ceaf..5cf00eac8d030 100644
--- a/lib/tsan/rtl/tsan_mman.h
+++ b/lib/tsan/rtl/tsan_mman.h
@@ -17,13 +17,14 @@
namespace __tsan {
-// Descriptor of user's memory block.
-struct MBlock {
- uptr size;
-};
+const uptr kDefaultAlignment = 16;
+
+void InitializeAllocator();
+void AlloctorThreadFinish(ThreadState *thr);
// For user allocations.
-void *user_alloc(ThreadState *thr, uptr pc, uptr sz);
+void *user_alloc(ThreadState *thr, uptr pc, uptr sz,
+ uptr align = kDefaultAlignment);
// Does not accept NULL.
void user_free(ThreadState *thr, uptr pc, void *p);
void *user_realloc(ThreadState *thr, uptr pc, void *p, uptr sz);
@@ -32,6 +33,10 @@ void *user_alloc_aligned(ThreadState *thr, uptr pc, uptr sz, uptr align);
// returns the descriptor of the block.
MBlock *user_mblock(ThreadState *thr, void *p);
+// Invoking malloc/free hooks that may be installed by the user.
+void invoke_malloc_hook(void *ptr, uptr size);
+void invoke_free_hook(void *ptr);
+
enum MBlockType {
MBlockScopedBuf,
MBlockString,
@@ -54,9 +59,10 @@ enum MBlockType {
MBlockSuppression,
MBlockExpectRace,
MBlockSignal,
+ MBlockFD,
// This must be the last.
- MBlockTypeCount,
+ MBlockTypeCount
};
// For internal data structures.
@@ -70,45 +76,5 @@ void DestroyAndFree(T *&p) {
p = 0;
}
-template<typename T>
-class InternalScopedBuf {
- public:
- explicit InternalScopedBuf(uptr cnt) {
- cnt_ = cnt;
- ptr_ = (T*)internal_alloc(MBlockScopedBuf, cnt * sizeof(T));
- }
-
- ~InternalScopedBuf() {
- internal_free(ptr_);
- }
-
- operator T *() {
- return ptr_;
- }
-
- T &operator[](uptr i) {
- return ptr_[i];
- }
-
- T *Ptr() {
- return ptr_;
- }
-
- uptr Count() {
- return cnt_;
- }
-
- uptr Size() {
- return cnt_ * sizeof(T);
- }
-
- private:
- T *ptr_;
- uptr cnt_;
-
- InternalScopedBuf(const InternalScopedBuf&);
- void operator = (const InternalScopedBuf&);
-};
-
} // namespace __tsan
#endif // TSAN_MMAN_H