You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.6 KiB
60 lines
1.6 KiB
//=-- lsan_thread.h -------------------------------------------------------===// |
|
// |
|
// The LLVM Compiler Infrastructure |
|
// |
|
// This file is distributed under the University of Illinois Open Source |
|
// License. See LICENSE.TXT for details. |
|
// |
|
//===----------------------------------------------------------------------===// |
|
// |
|
// This file is a part of LeakSanitizer. |
|
// Thread registry for standalone LSan. |
|
// |
|
//===----------------------------------------------------------------------===// |
|
|
|
#ifndef LSAN_THREAD_H |
|
#define LSAN_THREAD_H |
|
|
|
#include "sanitizer_common/sanitizer_thread_registry.h" |
|
|
|
namespace __sanitizer { |
|
struct DTLS; |
|
} |
|
|
|
namespace __lsan { |
|
|
|
class ThreadContext : public ThreadContextBase { |
|
public: |
|
explicit ThreadContext(int tid); |
|
void OnStarted(void *arg) override; |
|
void OnFinished() override; |
|
uptr stack_begin() { return stack_begin_; } |
|
uptr stack_end() { return stack_end_; } |
|
uptr tls_begin() { return tls_begin_; } |
|
uptr tls_end() { return tls_end_; } |
|
uptr cache_begin() { return cache_begin_; } |
|
uptr cache_end() { return cache_end_; } |
|
DTLS *dtls() { return dtls_; } |
|
|
|
private: |
|
uptr stack_begin_, stack_end_, |
|
cache_begin_, cache_end_, |
|
tls_begin_, tls_end_; |
|
DTLS *dtls_; |
|
}; |
|
|
|
void InitializeThreadRegistry(); |
|
|
|
void ThreadStart(u32 tid, uptr os_id); |
|
void ThreadFinish(); |
|
u32 ThreadCreate(u32 tid, uptr uid, bool detached); |
|
void ThreadJoin(u32 tid); |
|
u32 ThreadTid(uptr uid); |
|
|
|
u32 GetCurrentThread(); |
|
void SetCurrentThread(u32 tid); |
|
ThreadContext *CurrentThreadContext(); |
|
void EnsureMainThreadIDIsCorrect(); |
|
} // namespace __lsan |
|
|
|
#endif // LSAN_THREAD_H
|
|
|