//===-- tsan_sync.h ---------------------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // This file is a part of ThreadSanitizer (TSan), a race detector. // //===----------------------------------------------------------------------===// #ifndef TSAN_SYNC_H #define TSAN_SYNC_H #include "sanitizer_common/sanitizer_atomic.h" #include "sanitizer_common/sanitizer_common.h" #include "sanitizer_common/sanitizer_deadlock_detector_interface.h" #include "tsan_defs.h" #include "tsan_dense_alloc.h" #include "tsan_shadow.h" #include "tsan_vector_clock.h" namespace __tsan { // These need to match __tsan_mutex_* flags defined in tsan_interface.h. // See documentation there as well. enum MutexFlags { … }; // SyncVar is a descriptor of a user synchronization object // (mutex or an atomic variable). struct SyncVar { … }; // MetaMap maps app addresses to heap block (MBlock) and sync var (SyncVar) // descriptors. It uses 1/2 direct shadow, see tsan_platform.h for the mapping. class MetaMap { … }; } // namespace __tsan #endif // TSAN_SYNC_H