Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
14 pmbaty 1
//===- FDRTraceWriter.h - XRay FDR Trace Writer -----------------*- C++ -*-===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
//
9
// Test a utility that can write out XRay FDR Mode formatted trace files.
10
//
11
//===----------------------------------------------------------------------===//
12
#ifndef LLVM_XRAY_FDRTRACEWRITER_H
13
#define LLVM_XRAY_FDRTRACEWRITER_H
14
 
15
#include "llvm/Support/raw_ostream.h"
16
#include "llvm/Support/EndianStream.h"
17
#include "llvm/XRay/FDRRecords.h"
18
#include "llvm/XRay/XRayRecord.h"
19
 
20
namespace llvm {
21
namespace xray {
22
 
23
/// The FDRTraceWriter allows us to hand-craft an XRay Flight Data Recorder
24
/// (FDR) mode log file. This is used primarily for testing, generating
25
/// sequences of FDR records that can be read/processed. It can also be used to
26
/// generate various kinds of execution traces without using the XRay runtime.
27
/// Note that this writer does not do any validation, but uses the types of
28
/// records defined in the FDRRecords.h file.
29
class FDRTraceWriter : public RecordVisitor {
30
public:
31
  // Construct an FDRTraceWriter associated with an output stream.
32
  explicit FDRTraceWriter(raw_ostream &O, const XRayFileHeader &H);
33
  ~FDRTraceWriter();
34
 
35
  Error visit(BufferExtents &) override;
36
  Error visit(WallclockRecord &) override;
37
  Error visit(NewCPUIDRecord &) override;
38
  Error visit(TSCWrapRecord &) override;
39
  Error visit(CustomEventRecord &) override;
40
  Error visit(CallArgRecord &) override;
41
  Error visit(PIDRecord &) override;
42
  Error visit(NewBufferRecord &) override;
43
  Error visit(EndBufferRecord &) override;
44
  Error visit(FunctionRecord &) override;
45
  Error visit(CustomEventRecordV5 &) override;
46
  Error visit(TypedEventRecord &) override;
47
 
48
private:
49
  support::endian::Writer OS;
50
};
51
 
52
} // namespace xray
53
} // namespace llvm
54
 
55
#endif // LLVM_XRAY_FDRTRACEWRITER_H