[ASan/Win tests] Bring back -GS- as SEH tests fail otherwise
[blocksruntime.git] / lib / lsan / lsan_thread.h
blob4641b32ed6e6d4f2754811960dfe26a4f9a2b64b
1 //=-- lsan_thread.h -------------------------------------------------------===//
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 LeakSanitizer.
11 // Thread registry for standalone LSan.
13 //===----------------------------------------------------------------------===//
15 #ifndef LSAN_THREAD_H
16 #define LSAN_THREAD_H
18 #include "sanitizer_common/sanitizer_thread_registry.h"
20 namespace __lsan {
22 class ThreadContext : public ThreadContextBase {
23 public:
24 explicit ThreadContext(int tid);
25 void OnStarted(void *arg);
26 void OnFinished();
27 uptr stack_begin() { return stack_begin_; }
28 uptr stack_end() { return stack_end_; }
29 uptr tls_begin() { return tls_begin_; }
30 uptr tls_end() { return tls_end_; }
31 uptr cache_begin() { return cache_begin_; }
32 uptr cache_end() { return cache_end_; }
33 private:
34 uptr stack_begin_, stack_end_,
35 cache_begin_, cache_end_,
36 tls_begin_, tls_end_;
39 void InitializeThreadRegistry();
41 void ThreadStart(u32 tid, uptr os_id);
42 void ThreadFinish();
43 u32 ThreadCreate(u32 tid, uptr uid, bool detached);
44 void ThreadJoin(u32 tid);
45 u32 ThreadTid(uptr uid);
47 u32 GetCurrentThread();
48 void SetCurrentThread(u32 tid);
49 ThreadContext *CurrentThreadContext();
50 void EnsureMainThreadIDIsCorrect();
51 } // namespace __lsan
53 #endif // LSAN_THREAD_H