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