12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- //=-- lsan_thread.h -------------------------------------------------------===//
- //
- // 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 __lsan {
- class ThreadContext : public ThreadContextBase {
- public:
- explicit ThreadContext(int tid);
- void OnStarted(void *arg);
- void OnFinished();
- 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_; }
- private:
- uptr stack_begin_, stack_end_,
- cache_begin_, cache_end_,
- tls_begin_, tls_end_;
- };
- 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
|