![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /proc/self/root/usr/lib/llvm-6.0/include/llvm/XRay/ |
Upload File : |
//===- XRayRecord.h - XRay Trace Record -----------------------------------===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // // This file replicates the record definition for XRay log entries. This should // follow the evolution of the log record versions supported in the compiler-rt // xray project. // //===----------------------------------------------------------------------===// #ifndef LLVM_XRAY_XRAY_RECORD_H #define LLVM_XRAY_XRAY_RECORD_H #include <cstdint> #include <vector> namespace llvm { namespace xray { /// XRay traces all have a header providing some top-matter information useful /// to help tools determine how to interpret the information available in the /// trace. struct XRayFileHeader { /// Version of the XRay implementation that produced this file. uint16_t Version = 0; /// A numeric identifier for the type of file this is. Best used in /// combination with Version. uint16_t Type = 0; /// Whether the CPU that produced the timestamp counters (TSC) move at a /// constant rate. bool ConstantTSC; /// Whether the CPU that produced the timestamp counters (TSC) do not stop. bool NonstopTSC; /// The number of cycles per second for the CPU that produced the timestamp /// counter (TSC) values. Useful for estimating the amount of time that /// elapsed between two TSCs on some platforms. uint64_t CycleFrequency = 0; // This is different depending on the type of xray record. The naive format // stores a Wallclock timespec. FDR logging stores the size of a thread // buffer. char FreeFormData[16]; }; /// Determines the supported types of records that could be seen in XRay traces. /// This may or may not correspond to actual record types in the raw trace (as /// the loader implementation may synthesize this information in the process of /// of loading). enum class RecordTypes { ENTER, EXIT, TAIL_EXIT, ENTER_ARG }; struct XRayRecord { /// The type of record. uint16_t RecordType; /// The CPU where the thread is running. We assume number of CPUs <= 65536. uint16_t CPU; /// Identifies the type of record. RecordTypes Type; /// The function ID for the record. int32_t FuncId; /// Get the full 8 bytes of the TSC when we get the log record. uint64_t TSC; /// The thread ID for the currently running thread. uint32_t TId; /// The function call arguments. std::vector<uint64_t> CallArgs; }; } // namespace xray } // namespace llvm #endif // LLVM_XRAY_XRAY_RECORD_H