//===-- TraceIntelPTJSONStructs.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 // //===----------------------------------------------------------------------===// #ifndef LLDB_SOURCE_PLUGINS_TRACE_INTEL_PT_TRACEINTELPTJSONSTRUCTS_H #define LLDB_SOURCE_PLUGINS_TRACE_INTEL_PT_TRACEINTELPTJSONSTRUCTS_H #include "../common/TraceJSONStructs.h" #include namespace lldb_private { namespace trace_intel_pt { struct JSONTraceIntelPTCPUInfo { JSONTraceIntelPTCPUInfo() = default; JSONTraceIntelPTCPUInfo(pt_cpu cpu_info) { family = static_cast(cpu_info.family); model = static_cast(cpu_info.model); stepping = static_cast(cpu_info.stepping); vendor = cpu_info.vendor == pcv_intel ? "intel" : "Unknown"; } int64_t family; int64_t model; int64_t stepping; std::string vendor; }; struct JSONTraceIntelPTTrace { std::string type; JSONTraceIntelPTCPUInfo cpuInfo; }; struct JSONTraceIntelPTSession { JSONTraceIntelPTTrace ipt_trace; JSONTraceSessionBase session_base; }; struct JSONTraceIntelPTSettings : JSONTracePluginSettings { JSONTraceIntelPTCPUInfo cpuInfo; }; } // namespace trace_intel_pt } // namespace lldb_private namespace llvm { namespace json { bool fromJSON( const Value &value, lldb_private::trace_intel_pt::JSONTraceIntelPTSettings &plugin_settings, Path path); bool fromJSON(const llvm::json::Value &value, lldb_private::trace_intel_pt::JSONTraceIntelPTCPUInfo &packet, llvm::json::Path path); llvm::json::Value toJSON(const lldb_private::trace_intel_pt::JSONTraceIntelPTCPUInfo &cpu_info); llvm::json::Value toJSON(const lldb_private::trace_intel_pt::JSONTraceIntelPTTrace &trace); llvm::json::Value toJSON(const lldb_private::trace_intel_pt::JSONTraceIntelPTSession &session); } // namespace json } // namespace llvm #endif // LLDB_SOURCE_PLUGINS_TRACE_INTEL_PT_TRACEINTELPTJSONSTRUCTS_H