1//=-- lsan_thread.h -------------------------------------------------------===// 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 LeakSanitizer. 9// Thread registry for standalone LSan. 10// 11//===----------------------------------------------------------------------===// 12 13#ifndef LSAN_THREAD_H 14#define LSAN_THREAD_H 15 16#include "sanitizer_common/sanitizer_thread_registry.h" 17 18namespace __lsan { 19 20class ThreadContext : public ThreadContextBase { 21 public: 22 explicit ThreadContext(int tid); 23 void OnStarted(void *arg); 24 void OnFinished(); 25 uptr stack_begin() { return stack_begin_; } 26 uptr stack_end() { return stack_end_; } 27 uptr tls_begin() { return tls_begin_; } 28 uptr tls_end() { return tls_end_; } 29 uptr cache_begin() { return cache_begin_; } 30 uptr cache_end() { return cache_end_; } 31 private: 32 uptr stack_begin_, stack_end_, 33 cache_begin_, cache_end_, 34 tls_begin_, tls_end_; 35}; 36 37void InitializeThreadRegistry(); 38 39void ThreadStart(u32 tid, uptr os_id); 40void ThreadFinish(); 41u32 ThreadCreate(u32 tid, uptr uid, bool detached); 42void ThreadJoin(u32 tid); 43u32 ThreadTid(uptr uid); 44 45u32 GetCurrentThread(); 46void SetCurrentThread(u32 tid); 47ThreadContext *CurrentThreadContext(); 48void EnsureMainThreadIDIsCorrect(); 49} // namespace __lsan 50 51#endif // LSAN_THREAD_H 52