1 //===-- ProcessKDPLog.h -----------------------------------------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #ifndef LLDB_SOURCE_PLUGINS_PROCESS_MACOSX_KERNEL_PROCESSKDPLOG_H
10 #define LLDB_SOURCE_PLUGINS_PROCESS_MACOSX_KERNEL_PROCESSKDPLOG_H
11 
12 #include "lldb/Utility/Log.h"
13 
14 
15 namespace lldb_private {
16 
17 enum class KDPLog : Log::MaskType {
18   Async = Log::ChannelFlag<0>,
19   Breakpoints = Log::ChannelFlag<1>,
20   Comm = Log::ChannelFlag<2>,
21   MemoryDataLong = Log::ChannelFlag<3>,  // Log all memory reads/writes bytes
22   MemoryDataShort = Log::ChannelFlag<4>, // Log short memory reads/writes bytes
23   Memory = Log::ChannelFlag<5>,          // Log memory reads/writes calls
24   Packets = Log::ChannelFlag<6>,
25   Process = Log::ChannelFlag<7>,
26   Step = Log::ChannelFlag<8>,
27   Thread = Log::ChannelFlag<9>,
28   Watchpoints = Log::ChannelFlag<10>,
29   LLVM_MARK_AS_BITMASK_ENUM(Watchpoints)
30 };
31 #define KDP_LOG_PROCESS ::lldb_private::KDPLog::Process
32 #define KDP_LOG_THREAD ::lldb_private::KDPLog::Thread
33 #define KDP_LOG_PACKETS ::lldb_private::KDPLog::Packets
34 #define KDP_LOG_MEMORY ::lldb_private::KDPLog::Memory
35 #define KDP_LOG_MEMORY_DATA_SHORT ::lldb_private::KDPLog::MemoryDataShort
36 #define KDP_LOG_MEMORY_DATA_LONG ::lldb_private::KDPLog::MemoryDataLong
37 #define KDP_LOG_BREAKPOINTS ::lldb_private::KDPLog::Breakpoints
38 #define KDP_LOG_WATCHPOINTS ::lldb_private::KDPLog::Watchpoints
39 #define KDP_LOG_STEP ::lldb_private::KDPLog::Step
40 #define KDP_LOG_COMM ::lldb_private::KDPLog::Comm
41 #define KDP_LOG_ASYNC ::lldb_private::KDPLog::Async
42 #define KDP_LOG_DEFAULT KDP_LOG_PACKETS
43 
44 class ProcessKDPLog {
45 public:
46   static void Initialize();
47 
48   static Log *GetLogIfAllCategoriesSet(KDPLog mask) { return GetLog(mask); }
49 };
50 
51 template <> Log::Channel &LogChannelFor<KDPLog>();
52 }
53 
54 #endif // LLDB_SOURCE_PLUGINS_PROCESS_MACOSX_KERNEL_PROCESSKDPLOG_H
55