Path: blob/main/contrib/llvm-project/llvm/lib/XRay/RecordPrinter.cpp
35233 views
//===- RecordPrinter.cpp - FDR Record Printer -----------------------------===//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===----------------------------------------------------------------------===//7#include "llvm/XRay/RecordPrinter.h"89#include "llvm/Support/FormatVariadic.h"1011namespace llvm {12namespace xray {1314Error RecordPrinter::visit(BufferExtents &R) {15OS << formatv("<Buffer: size = {0} bytes>", R.size()) << Delim;16return Error::success();17}1819Error RecordPrinter::visit(WallclockRecord &R) {20OS << formatv("<Wall Time: seconds = {0}.{1,0+6}>", R.seconds(), R.nanos())21<< Delim;22return Error::success();23}2425Error RecordPrinter::visit(NewCPUIDRecord &R) {26OS << formatv("<CPU: id = {0}, tsc = {1}>", R.cpuid(), R.tsc()) << Delim;27return Error::success();28}2930Error RecordPrinter::visit(TSCWrapRecord &R) {31OS << formatv("<TSC Wrap: base = {0}>", R.tsc()) << Delim;32return Error::success();33}3435Error RecordPrinter::visit(CustomEventRecord &R) {36OS << formatv(37"<Custom Event: tsc = {0}, cpu = {1}, size = {2}, data = '{3}'>",38R.tsc(), R.cpu(), R.size(), R.data())39<< Delim;40return Error::success();41}4243Error RecordPrinter::visit(CustomEventRecordV5 &R) {44OS << formatv("<Custom Event: delta = +{0}, size = {1}, data = '{2}'>",45R.delta(), R.size(), R.data())46<< Delim;47return Error::success();48}4950Error RecordPrinter::visit(TypedEventRecord &R) {51OS << formatv(52"<Typed Event: delta = +{0}, type = {1}, size = {2}, data = '{3}'",53R.delta(), R.eventType(), R.size(), R.data())54<< Delim;55return Error::success();56}5758Error RecordPrinter::visit(CallArgRecord &R) {59OS << formatv("<Call Argument: data = {0} (hex = {0:x})>", R.arg()) << Delim;60return Error::success();61}6263Error RecordPrinter::visit(PIDRecord &R) {64OS << formatv("<PID: {0}>", R.pid()) << Delim;65return Error::success();66}6768Error RecordPrinter::visit(NewBufferRecord &R) {69OS << formatv("<Thread ID: {0}>", R.tid()) << Delim;70return Error::success();71}7273Error RecordPrinter::visit(EndBufferRecord &R) {74OS << "<End of Buffer>" << Delim;75return Error::success();76}7778Error RecordPrinter::visit(FunctionRecord &R) {79// FIXME: Support symbolization here?80switch (R.recordType()) {81case RecordTypes::ENTER:82OS << formatv("<Function Enter: #{0} delta = +{1}>", R.functionId(),83R.delta());84break;85case RecordTypes::ENTER_ARG:86OS << formatv("<Function Enter With Arg: #{0} delta = +{1}>",87R.functionId(), R.delta());88break;89case RecordTypes::EXIT:90OS << formatv("<Function Exit: #{0} delta = +{1}>", R.functionId(),91R.delta());92break;93case RecordTypes::TAIL_EXIT:94OS << formatv("<Function Tail Exit: #{0} delta = +{1}>", R.functionId(),95R.delta());96break;97case RecordTypes::CUSTOM_EVENT:98case RecordTypes::TYPED_EVENT:99// TODO: Flag as a bug?100break;101}102OS << Delim;103return Error::success();104}105106} // namespace xray107} // namespace llvm108109110