#include "hwasan_thread.h"
#include "hwasan.h"
#include "hwasan_interface_internal.h"
#include "hwasan_mapping.h"
#include "hwasan_poisoning.h"
#include "hwasan_thread_list.h"
#include "sanitizer_common/sanitizer_atomic.h"
#include "sanitizer_common/sanitizer_file.h"
#include "sanitizer_common/sanitizer_placement_new.h"
#include "sanitizer_common/sanitizer_tls_get_addr.h"
namespace __hwasan {
static u32 RandomSeed() { … }
void Thread::InitRandomState() { … }
void Thread::Init(uptr stack_buffer_start, uptr stack_buffer_size,
const InitState *state) { … }
void Thread::InitStackRingBuffer(uptr stack_buffer_start,
uptr stack_buffer_size) { … }
void Thread::ClearShadowForThreadStackAndTLS() { … }
void Thread::Destroy() { … }
void Thread::Print(const char *Prefix) { … }
static u32 xorshift(u32 state) { … }
tag_t Thread::GenerateRandomTag(uptr num_bits) { … }
void EnsureMainThreadIDIsCorrect() { … }
}
namespace __lsan {
static __hwasan::HwasanThreadList *GetHwasanThreadListLocked() { … }
static __hwasan::Thread *GetThreadByOsIDLocked(tid_t os_id) { … }
void LockThreads() { … }
void UnlockThreads() { … }
void EnsureMainThreadIDIsCorrect() { … }
bool GetThreadRangesLocked(tid_t os_id, uptr *stack_begin, uptr *stack_end,
uptr *tls_begin, uptr *tls_end, uptr *cache_begin,
uptr *cache_end, DTLS **dtls) { … }
void GetAllThreadAllocatorCachesLocked(InternalMmapVector<uptr> *caches) { … }
void GetThreadExtraStackRangesLocked(tid_t os_id,
InternalMmapVector<Range> *ranges) { … }
void GetThreadExtraStackRangesLocked(InternalMmapVector<Range> *ranges) { … }
void GetAdditionalThreadContextPtrsLocked(InternalMmapVector<uptr> *ptrs) { … }
void GetRunningThreadsLocked(InternalMmapVector<tid_t> *threads) { … }
}