1 //===-- tsan_interface.cc -------------------------------------------------===// 2 // 3 // This file is distributed under the University of Illinois Open Source 4 // License. See LICENSE.TXT for details. 5 // 6 //===----------------------------------------------------------------------===// 7 // 8 // This file is a part of ThreadSanitizer (TSan), a race detector. 9 // 10 //===----------------------------------------------------------------------===// 11 12 #include "tsan_interface.h" 13 #include "tsan_interface_ann.h" 14 #include "tsan_rtl.h" 15 16 #define CALLERPC ((uptr)__builtin_return_address(0)) 17 18 using namespace __tsan; // NOLINT 19 20 void __tsan_init() { 21 Initialize(cur_thread()); 22 } 23 24 void __tsan_read16(void *addr) { 25 MemoryRead(cur_thread(), CALLERPC, (uptr)addr, kSizeLog8); 26 MemoryRead(cur_thread(), CALLERPC, (uptr)addr + 8, kSizeLog8); 27 } 28 29 void __tsan_write16(void *addr) { 30 MemoryWrite(cur_thread(), CALLERPC, (uptr)addr, kSizeLog8); 31 MemoryWrite(cur_thread(), CALLERPC, (uptr)addr + 8, kSizeLog8); 32 } 33 34 void __tsan_acquire(void *addr) { 35 Acquire(cur_thread(), CALLERPC, (uptr)addr); 36 } 37 38 void __tsan_release(void *addr) { 39 Release(cur_thread(), CALLERPC, (uptr)addr); 40 } 41