Skip to content

Commit

Permalink
[HWASAN] Added thread annotations to HwasanThreadList.
Browse files Browse the repository at this point in the history
Reviewed By: vitalybuka

Differential Revision: https://reviews.llvm.org/D141438
  • Loading branch information
kstoimenov committed Jan 10, 2023
1 parent d291f1f commit 2cde727
Showing 1 changed file with 14 additions and 10 deletions.
24 changes: 14 additions & 10 deletions compiler-rt/lib/hwasan/hwasan_thread_list.h
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,8 @@ class HwasanThreadList {
RoundUpTo(ring_buffer_size_ + sizeof(Thread), ring_buffer_size_ * 2);
}

Thread *CreateCurrentThread(const Thread::InitState *state = nullptr) {
Thread *CreateCurrentThread(const Thread::InitState *state = nullptr)
SANITIZER_EXCLUDES(free_list_mutex_, live_list_mutex_) {
Thread *t = nullptr;
{
SpinMutexLock l(&free_list_mutex_);
Expand Down Expand Up @@ -114,7 +115,8 @@ class HwasanThreadList {
ReleaseMemoryPagesToOS(start, start + thread_alloc_size_);
}

void RemoveThreadFromLiveList(Thread *t) {
void RemoveThreadFromLiveList(Thread *t)
SANITIZER_EXCLUDES(live_list_mutex_) {
SpinMutexLock l(&live_list_mutex_);
for (Thread *&t2 : live_list_)
if (t2 == t) {
Expand All @@ -127,7 +129,7 @@ class HwasanThreadList {
CHECK(0 && "thread not found in live list");
}

void ReleaseThread(Thread *t) {
void ReleaseThread(Thread *t) SANITIZER_EXCLUDES(free_list_mutex_) {
RemoveThreadStats(t);
t->Destroy();
DontNeedThread(t);
Expand All @@ -149,24 +151,24 @@ class HwasanThreadList {
}

template <class CB>
void VisitAllLiveThreads(CB cb) {
void VisitAllLiveThreads(CB cb) SANITIZER_EXCLUDES(live_list_mutex_) {
SpinMutexLock l(&live_list_mutex_);
for (Thread *t : live_list_) cb(t);
}

void AddThreadStats(Thread *t) {
void AddThreadStats(Thread *t) SANITIZER_EXCLUDES(stats_mutex_) {
SpinMutexLock l(&stats_mutex_);
stats_.n_live_threads++;
stats_.total_stack_size += t->stack_size();
}

void RemoveThreadStats(Thread *t) {
void RemoveThreadStats(Thread *t) SANITIZER_EXCLUDES(stats_mutex_) {
SpinMutexLock l(&stats_mutex_);
stats_.n_live_threads--;
stats_.total_stack_size -= t->stack_size();
}

ThreadStats GetThreadStats() {
ThreadStats GetThreadStats() SANITIZER_EXCLUDES(stats_mutex_) {
SpinMutexLock l(&stats_mutex_);
return stats_;
}
Expand All @@ -191,12 +193,14 @@ class HwasanThreadList {
uptr thread_alloc_size_;

SpinMutex free_list_mutex_;
InternalMmapVector<Thread *> free_list_;
InternalMmapVector<Thread *> free_list_
SANITIZER_GUARDED_BY(free_list_mutex_);
SpinMutex live_list_mutex_;
InternalMmapVector<Thread *> live_list_;
InternalMmapVector<Thread *> live_list_
SANITIZER_GUARDED_BY(live_list_mutex_);

ThreadStats stats_;
SpinMutex stats_mutex_;
ThreadStats stats_ SANITIZER_GUARDED_BY(stats_mutex_);
};

void InitThreadList(uptr storage, uptr size);
Expand Down

0 comments on commit 2cde727

Please sign in to comment.