//===-- xray_log_interface.h ----------------------------------------------===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // // This file is a part of XRay, a function call tracing system. // // APIs for installing a new logging implementation. //===----------------------------------------------------------------------===// #ifndef XRAY_XRAY_LOG_INTERFACE_H #define XRAY_XRAY_LOG_INTERFACE_H #include "xray/xray_interface.h" #include extern "C" { enum XRayLogInitStatus { XRAY_LOG_UNINITIALIZED = 0, XRAY_LOG_INITIALIZING = 1, XRAY_LOG_INITIALIZED = 2, XRAY_LOG_FINALIZING = 3, XRAY_LOG_FINALIZED = 4, }; enum XRayLogFlushStatus { XRAY_LOG_NOT_FLUSHING = 0, XRAY_LOG_FLUSHING = 1, XRAY_LOG_FLUSHED = 2, }; struct XRayLogImpl { XRayLogInitStatus (*log_init)(size_t, size_t, void *, size_t); XRayLogInitStatus (*log_finalize)(); void (*handle_arg0)(int32_t, XRayEntryType); XRayLogFlushStatus (*flush_log)(); }; void __xray_set_log_impl(XRayLogImpl Impl); XRayLogInitStatus __xray_log_init(size_t BufferSize, size_t MaxBuffers, void *Args, size_t ArgsSize); XRayLogInitStatus __xray_log_finalize(); XRayLogFlushStatus __xray_log_flushLog(); } // extern "C" namespace __xray { // Options used by the LLVM XRay FDR implementation. struct FDRLoggingOptions { bool ReportErrors = false; int Fd = -1; }; } // namespace __xray #endif // XRAY_XRAY_LOG_INTERFACE_H