Added KDP resume, suspend, set/remove breakpoint, and kernel version support.
Also we now display a live update of the kexts that we are loading.



git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@135563 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h b/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h
index 8c5b6d5..e4e92c8 100644
--- a/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h
+++ b/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h
@@ -65,6 +65,11 @@
         eCommandTypeKernelVersion
     } CommandType;
 
+    enum 
+    {
+        eFeatureLocalBreakpointsSupported = (1u << 0),
+    };
+
     typedef enum
     {
         KDP_PROTERR_SUCCESS = 0,
@@ -173,12 +178,21 @@
                               uint32_t dst_size,
                               lldb_private::Error &error);
     
+    const char *
+    GetKernelVersion ();
+    
     uint32_t
     GetVersion ();
 
     uint32_t
     GetFeatureFlags ();
 
+    bool
+    LocalBreakpointsAreSupported ()
+    {
+        return (GetFeatureFlags() & eFeatureLocalBreakpointsSupported) != 0;
+    }
+
     uint32_t
     GetCPUMask ();
     
@@ -188,6 +202,16 @@
     uint32_t
     GetCPUSubtype ();
 
+    // If cpu_mask is zero, then we will resume all CPUs
+    bool
+    SendRequestResume (uint32_t cpu_mask = 0);
+
+    bool
+    SendRequestSuspend ();
+
+    bool
+    SendRequestBreakpoint (bool set, lldb::addr_t addr);
+
 protected:
     typedef std::list<std::string> packet_collection;
 
@@ -216,6 +240,8 @@
     bool
     SendRequestHostInfo ();
 
+    bool
+    SendRequestKernelVersion ();
     
     void
     DumpPacket (lldb_private::Stream &s, 
@@ -280,6 +306,8 @@
     uint32_t m_kdp_hostinfo_cpu_mask;
     uint32_t m_kdp_hostinfo_cpu_type;
     uint32_t m_kdp_hostinfo_cpu_subtype;
+    std::string m_kernel_version;
+    lldb::addr_t m_last_read_memory_addr; // Last memory read address for logging
 private:
     //------------------------------------------------------------------
     // For CommunicationKDP only