diff options
Diffstat (limited to 'lib/tsan/rtl/tsan_mman.h')
| -rw-r--r-- | lib/tsan/rtl/tsan_mman.h | 58 | 
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 | 
