1 #include "hwasan_thread_list.h"
2 
3 #include "sanitizer_common/sanitizer_thread_arg_retval.h"
4 
5 namespace __hwasan {
6 
7 static HwasanThreadList *hwasan_thread_list;
8 static ThreadArgRetval *thread_data;
9 
hwasanThreadList()10 HwasanThreadList &hwasanThreadList() { return *hwasan_thread_list; }
hwasanThreadArgRetval()11 ThreadArgRetval &hwasanThreadArgRetval() { return *thread_data; }
12 
InitThreadList(uptr storage,uptr size)13 void InitThreadList(uptr storage, uptr size) {
14   CHECK_EQ(hwasan_thread_list, nullptr);
15 
16   static ALIGNED(alignof(
17       HwasanThreadList)) char thread_list_placeholder[sizeof(HwasanThreadList)];
18   hwasan_thread_list =
19       new (thread_list_placeholder) HwasanThreadList(storage, size);
20 
21   CHECK_EQ(thread_data, nullptr);
22 
23   static ALIGNED(alignof(
24       ThreadArgRetval)) char thread_data_placeholder[sizeof(ThreadArgRetval)];
25   thread_data = new (thread_data_placeholder) ThreadArgRetval();
26 }
27 
28 }  // namespace __hwasan
29