[Lldb-commits] [lldb] r217083 - Add a new target.process.memory-cache-line-size to change the size of

Jason Molenda jmolenda at apple.com
Wed Sep 3 15:30:54 PDT 2014


Author: jmolenda
Date: Wed Sep  3 17:30:54 2014
New Revision: 217083

URL: http://llvm.org/viewvc/llvm-project?rev=217083&view=rev
Log:
Add a new target.process.memory-cache-line-size to change the size of
lldb's internal memory cache chunks that are read from the remote
system.  For a remote connection that is especially slow, a user may
need to reduce it; reading a 512 byte chunk of memory whenever a
4-byte region is requested may not be the right decision in these
kinds of environments.
<rdar://problem/18175117> 

Modified:
    lldb/trunk/include/lldb/Interpreter/Property.h
    lldb/trunk/include/lldb/Target/Process.h
    lldb/trunk/source/Target/Memory.cpp
    lldb/trunk/source/Target/Process.cpp
    lldb/trunk/source/Target/Target.cpp

Modified: lldb/trunk/include/lldb/Interpreter/Property.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Interpreter/Property.h?rev=217083&r1=217082&r2=217083&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Interpreter/Property.h (original)
+++ lldb/trunk/include/lldb/Interpreter/Property.h Wed Sep  3 17:30:54 2014
@@ -29,7 +29,7 @@ namespace lldb_private {
     {
         const char *name;
         OptionValue::Type type;
-        bool global;
+        bool global;                        // false == this setting is a global setting by default
         uintptr_t default_uint_value;
         const char *default_cstr_value;
         OptionEnumValueElement *enum_values;

Modified: lldb/trunk/include/lldb/Target/Process.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Target/Process.h?rev=217083&r1=217082&r2=217083&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Target/Process.h (original)
+++ lldb/trunk/include/lldb/Target/Process.h Wed Sep  3 17:30:54 2014
@@ -68,6 +68,9 @@ public:
     bool
     GetDisableMemoryCache() const;
 
+    uint64_t
+    GetMemoryCacheLineSize () const;
+
     Args
     GetExtraStartupCommands () const;
 

Modified: lldb/trunk/source/Target/Memory.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Target/Memory.cpp?rev=217083&r1=217082&r2=217083&view=diff
==============================================================================
--- lldb/trunk/source/Target/Memory.cpp (original)
+++ lldb/trunk/source/Target/Memory.cpp Wed Sep  3 17:30:54 2014
@@ -26,7 +26,7 @@ using namespace lldb_private;
 //----------------------------------------------------------------------
 MemoryCache::MemoryCache(Process &process) :
     m_process (process),
-    m_cache_line_byte_size (512),
+    m_cache_line_byte_size (process.GetMemoryCacheLineSize()),
     m_mutex (Mutex::eMutexTypeRecursive),
     m_cache (),
     m_invalid_ranges ()
@@ -47,6 +47,7 @@ MemoryCache::Clear(bool clear_invalid_ra
     m_cache.clear();
     if (clear_invalid_ranges)
         m_invalid_ranges.Clear();
+    m_cache_line_byte_size = m_process.GetMemoryCacheLineSize();
 }
 
 void

Modified: lldb/trunk/source/Target/Process.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Target/Process.cpp?rev=217083&r1=217082&r2=217083&view=diff
==============================================================================
--- lldb/trunk/source/Target/Process.cpp (original)
+++ lldb/trunk/source/Target/Process.cpp Wed Sep  3 17:30:54 2014
@@ -108,6 +108,7 @@ g_properties[] =
     { "python-os-plugin-path", OptionValue::eTypeFileSpec, false, true, NULL, NULL, "A path to a python OS plug-in module file that contains a OperatingSystemPlugIn class." },
     { "stop-on-sharedlibrary-events" , OptionValue::eTypeBoolean, true, false, NULL, NULL, "If true, stop when a shared library is loaded or unloaded." },
     { "detach-keeps-stopped" , OptionValue::eTypeBoolean, true, false, NULL, NULL, "If true, detach will attempt to keep the process stopped." },
+    { "memory-cache-line-size" , OptionValue::eTypeUInt64, false, 512, NULL, NULL, "The memory cache line size" },
     {  NULL                  , OptionValue::eTypeInvalid, false, 0, NULL, NULL, NULL  }
 };
 
@@ -118,7 +119,8 @@ enum {
     ePropertyUnwindOnErrorInExpressions,
     ePropertyPythonOSPluginPath,
     ePropertyStopOnSharedLibraryEvents,
-    ePropertyDetachKeepsStopped
+    ePropertyDetachKeepsStopped,
+    ePropertyMemCacheLineSize
 };
 
 ProcessProperties::ProcessProperties (bool is_global) :
@@ -148,6 +150,13 @@ ProcessProperties::GetDisableMemoryCache
     return m_collection_sp->GetPropertyAtIndexAsBoolean (NULL, idx, g_properties[idx].default_uint_value != 0);
 }
 
+uint64_t
+ProcessProperties::GetMemoryCacheLineSize() const
+{
+    const uint32_t idx = ePropertyMemCacheLineSize;
+    return m_collection_sp->GetPropertyAtIndexAsUInt64 (NULL, idx, g_properties[idx].default_uint_value);
+}
+
 Args
 ProcessProperties::GetExtraStartupCommands () const
 {

Modified: lldb/trunk/source/Target/Target.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Target/Target.cpp?rev=217083&r1=217082&r2=217083&view=diff
==============================================================================
--- lldb/trunk/source/Target/Target.cpp (original)
+++ lldb/trunk/source/Target/Target.cpp Wed Sep  3 17:30:54 2014
@@ -1436,7 +1436,12 @@ Target::ReadCStringFromMemory (const Add
         Error error;
         addr_t curr_addr = addr.GetLoadAddress(this);
         Address address(addr);
+
+        // We could call m_process_sp->GetMemoryCacheLineSize() but I don't
+        // think this really needs to be tied to the memory cache subsystem's
+        // cache line size, so leave this as a fixed constant.
         const size_t cache_line_size = 512;
+
         size_t bytes_left = dst_max_len - 1;
         char *curr_dst = dst;
         





More information about the lldb-commits mailing list