2015-04-14 Marc Glisse <marc.glisse@inria.fr>
[official-gcc.git] / libsanitizer / lsan / lsan_thread.h
blobcd13fdb5c5229a92425bba69b23e0dc276f40492
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.
11 //===----------------------------------------------------------------------===//
13 #ifndef LSAN_THREAD_H
14 #define LSAN_THREAD_H
16 #include "sanitizer_common/sanitizer_thread_registry.h"
18 namespace __lsan {
20 class 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_;
37 void InitializeThreadRegistry();
39 void ThreadStart(u32 tid, uptr os_id);
40 void ThreadFinish();
41 u32 ThreadCreate(u32 tid, uptr uid, bool detached);
42 void ThreadJoin(u32 tid);
43 u32 ThreadTid(uptr uid);
45 u32 GetCurrentThread();
46 void SetCurrentThread(u32 tid);
47 ThreadContext *CurrentThreadContext();
48 void EnsureMainThreadIDIsCorrect();
49 } // namespace __lsan
51 #endif // LSAN_THREAD_H