118a9135dSAdrian McCarthy //===-- ProcessWindowsLog.h -------------------------------------*- C++ -*-===//
218a9135dSAdrian McCarthy //
32946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
42946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information.
52946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
618a9135dSAdrian McCarthy //
718a9135dSAdrian McCarthy //===----------------------------------------------------------------------===//
818a9135dSAdrian McCarthy 
918a9135dSAdrian McCarthy #ifndef liblldb_ProcessWindowsLog_h_
1018a9135dSAdrian McCarthy #define liblldb_ProcessWindowsLog_h_
1118a9135dSAdrian McCarthy 
126f9e6901SZachary Turner #include "lldb/Utility/Log.h"
13*359a2debSPavel Labath #include "llvm/ADT/BitmaskEnum.h"
1418a9135dSAdrian McCarthy 
153cc0e33eSPavel Labath namespace lldb_private {
1618a9135dSAdrian McCarthy 
176b67e89bSPavel Labath enum class WindowsLog : Log::MaskType {
186b67e89bSPavel Labath   Breakpoints = Log::ChannelFlag<0>, // Log breakpoint operations
196b67e89bSPavel Labath   Event = Log::ChannelFlag<1>,       // Low level debug events
206b67e89bSPavel Labath   Exception = Log::ChannelFlag<2>,   // Log exceptions
216b67e89bSPavel Labath   Memory = Log::ChannelFlag<3>,      // Log memory reads/writes calls
226b67e89bSPavel Labath   Process = Log::ChannelFlag<4>,     // Log process operations
236b67e89bSPavel Labath   Registers = Log::ChannelFlag<5>,   // Log register operations
246b67e89bSPavel Labath   Step = Log::ChannelFlag<6>,        // Log step operations
256b67e89bSPavel Labath   Thread = Log::ChannelFlag<7>,      // Log thread operations
266b67e89bSPavel Labath   LLVM_MARK_AS_BITMASK_ENUM(Thread)
276b67e89bSPavel Labath };
28*359a2debSPavel Labath LLVM_ENABLE_BITMASK_ENUMS_IN_NAMESPACE();
296b67e89bSPavel Labath 
306b67e89bSPavel Labath class ProcessWindowsLog {
3118a9135dSAdrian McCarthy public:
32b9c1b51eSKate Stone   static void Initialize();
33b9c1b51eSKate Stone   static void Terminate();
3418a9135dSAdrian McCarthy };
356b67e89bSPavel Labath 
366b67e89bSPavel Labath template <> Log::Channel &LogChannelFor<WindowsLog>();
373cc0e33eSPavel Labath }
3818a9135dSAdrian McCarthy 
3918a9135dSAdrian McCarthy #endif // liblldb_ProcessWindowsLog_h_
40