llvm/compiler-rt/lib/tsan/rtl/tsan_trace.h

//===-- tsan_trace.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_TRACE_H
#define TSAN_TRACE_H

#include "tsan_defs.h"
#include "tsan_ilist.h"
#include "tsan_mutexset.h"
#include "tsan_stack_trace.h"

namespace __tsan {

enum class EventType : u64 {};

// "Base" type for all events for type dispatch.
struct Event {};
static_assert;

// Nop event used as padding and does not affect state during replay.
static constexpr Event NopEvent =;

// Compressed memory access can represent only some events with PCs
// close enough to each other. Otherwise we fall back to EventAccessExt.
struct EventAccess {};
static_assert;

// Function entry (pc != 0) or exit (pc == 0).
struct EventFunc {};
static_assert;

// Extended memory access with full PC.
struct EventAccessExt {};
static_assert;

// Access to a memory range.
struct EventAccessRange {};
static_assert;

// Mutex lock.
struct EventLock {};
static_assert;

// Mutex unlock.
struct EventUnlock {};
static_assert;

// Time change event.
struct EventTime {};
static_assert;

struct Trace;

struct TraceHeader {};

struct TracePart : TraceHeader {};
static_assert;

struct Trace {};

}  // namespace __tsan

#endif  // TSAN_TRACE_H