1 //=-- lsan_thread.h -------------------------------------------------------===//
3 // This file is distributed under the University of Illinois Open Source
4 // License. See LICENSE.TXT for details.
6 //===----------------------------------------------------------------------===//
8 // This file is a part of LeakSanitizer.
9 // Thread registry for standalone LSan.
11 //===----------------------------------------------------------------------===//
16 #include "sanitizer_common/sanitizer_thread_registry.h"
20 class ThreadContext
: public ThreadContextBase
{
22 explicit ThreadContext(int tid
);
23 void OnStarted(void *arg
) override
;
24 void OnFinished() override
;
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_
; }
32 uptr stack_begin_
, stack_end_
,
33 cache_begin_
, cache_end_
,
37 void InitializeThreadRegistry();
39 void ThreadStart(u32 tid
, uptr os_id
);
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();
51 #endif // LSAN_THREAD_H