<rdar://problem/13793059>

Added a setting to control timeout for kdp response packets. While I was at it, I also added a way to control the response timeout for gdb-remote packets.

KDP defaults to 5 seconds, and GDB defaults to 1 second. These were the default values that were in the code prior to adding these settings.

(lldb) settings set plugin.process.gdb-remote.packet-timeout 10
(lldb) settings set plugin.process.kdp-remote.packet-timeout 10

llvm-svn: 186360
This commit is contained in:
Greg Clayton
2013-07-15 22:54:20 +00:00
parent 1c1d6c1666
commit 7f98240df6
7 changed files with 250 additions and 40 deletions

View File

@@ -1388,15 +1388,17 @@ PluginManager::AutoCompletePlatformName (const char *name, StringList &matches)
struct ProcessInstance
{
ProcessInstance() :
name(),
description(),
create_callback(NULL)
name(),
description(),
create_callback(NULL),
debugger_init_callback(NULL)
{
}
ConstString name;
std::string description;
ProcessCreateInstance create_callback;
DebuggerInitializeCallback debugger_init_callback;
};
typedef std::vector<ProcessInstance> ProcessInstances;
@@ -1417,12 +1419,10 @@ GetProcessInstances ()
bool
PluginManager::RegisterPlugin
(
const ConstString &name,
const char *description,
ProcessCreateInstance create_callback
)
PluginManager::RegisterPlugin (const ConstString &name,
const char *description,
ProcessCreateInstance create_callback,
DebuggerInitializeCallback debugger_init_callback)
{
if (create_callback)
{
@@ -1432,6 +1432,7 @@ PluginManager::RegisterPlugin
if (description && description[0])
instance.description = description;
instance.create_callback = create_callback;
instance.debugger_init_callback = debugger_init_callback;
Mutex::Locker locker (GetProcessMutex ());
GetProcessInstances ().push_back (instance);
}
@@ -1851,13 +1852,26 @@ PluginManager::DebuggerInitialize (Debugger &debugger)
pos->debugger_init_callback (debugger);
}
}
// Initialize the Process plugins
{
Mutex::Locker locker (GetProcessMutex());
ProcessInstances &instances = GetProcessInstances();
ProcessInstances::iterator pos, end = instances.end();
for (pos = instances.begin(); pos != end; ++ pos)
{
if (pos->debugger_init_callback)
pos->debugger_init_callback (debugger);
}
}
}
// This will put a plugin's settings under e.g. "plugin.dynamic-loader.darwin-kernel.SETTINGNAME".
// The new preferred ordering is to put plugins under "dynamic-loader.plugin.darwin-kernel.SETTINGNAME"
// and if there were a generic dynamic-loader setting, it would be "dynamic-loader.SETTINGNAME".
// This is the preferred new way to register plugin specific settings. e.g.
// This will put a plugin's settings under e.g. "plugin.<plugin_type_name>.<plugin_type_desc>.SETTINGNAME".
static lldb::OptionValuePropertiesSP
GetDebuggerPropertyForPluginsOldStyle (Debugger &debugger,
GetDebuggerPropertyForPlugins (Debugger &debugger,
const ConstString &plugin_type_name,
const ConstString &plugin_type_desc,
bool can_create)
@@ -1894,14 +1908,14 @@ GetDebuggerPropertyForPluginsOldStyle (Debugger &debugger,
return lldb::OptionValuePropertiesSP();
}
// This is the preferred new way to register plugin specific settings. e.g.
// "platform.plugin.darwin-kernel.SETTINGNAME"
// This is deprecated way to register plugin specific settings. e.g.
// "<plugin_type_name>.plugin.<plugin_type_desc>.SETTINGNAME"
// and Platform generic settings would be under "platform.SETTINGNAME".
static lldb::OptionValuePropertiesSP
GetDebuggerPropertyForPlugins (Debugger &debugger,
const ConstString &plugin_type_name,
const ConstString &plugin_type_desc,
bool can_create)
GetDebuggerPropertyForPluginsOldStyle (Debugger &debugger,
const ConstString &plugin_type_name,
const ConstString &plugin_type_desc,
bool can_create)
{
static ConstString g_property_name("plugin");
lldb::OptionValuePropertiesSP parent_properties_sp (debugger.GetValueProperties());
@@ -1939,7 +1953,7 @@ lldb::OptionValuePropertiesSP
PluginManager::GetSettingForDynamicLoaderPlugin (Debugger &debugger, const ConstString &setting_name)
{
lldb::OptionValuePropertiesSP properties_sp;
lldb::OptionValuePropertiesSP plugin_type_properties_sp (GetDebuggerPropertyForPluginsOldStyle (debugger,
lldb::OptionValuePropertiesSP plugin_type_properties_sp (GetDebuggerPropertyForPlugins (debugger,
ConstString("dynamic-loader"),
ConstString(), // not creating to so we don't need the description
false));
@@ -1956,7 +1970,7 @@ PluginManager::CreateSettingForDynamicLoaderPlugin (Debugger &debugger,
{
if (properties_sp)
{
lldb::OptionValuePropertiesSP plugin_type_properties_sp (GetDebuggerPropertyForPluginsOldStyle (debugger,
lldb::OptionValuePropertiesSP plugin_type_properties_sp (GetDebuggerPropertyForPlugins (debugger,
ConstString("dynamic-loader"),
ConstString("Settings for dynamic loader plug-ins"),
true));
@@ -1977,10 +1991,10 @@ lldb::OptionValuePropertiesSP
PluginManager::GetSettingForPlatformPlugin (Debugger &debugger, const ConstString &setting_name)
{
lldb::OptionValuePropertiesSP properties_sp;
lldb::OptionValuePropertiesSP plugin_type_properties_sp (GetDebuggerPropertyForPlugins (debugger,
ConstString("platform"),
ConstString(), // not creating to so we don't need the description
false));
lldb::OptionValuePropertiesSP plugin_type_properties_sp (GetDebuggerPropertyForPluginsOldStyle (debugger,
ConstString("platform"),
ConstString(), // not creating to so we don't need the description
false));
if (plugin_type_properties_sp)
properties_sp = plugin_type_properties_sp->GetSubProperty (NULL, setting_name);
return properties_sp;
@@ -1991,12 +2005,50 @@ PluginManager::CreateSettingForPlatformPlugin (Debugger &debugger,
const lldb::OptionValuePropertiesSP &properties_sp,
const ConstString &description,
bool is_global_property)
{
if (properties_sp)
{
lldb::OptionValuePropertiesSP plugin_type_properties_sp (GetDebuggerPropertyForPluginsOldStyle (debugger,
ConstString("platform"),
ConstString("Settings for platform plug-ins"),
true));
if (plugin_type_properties_sp)
{
plugin_type_properties_sp->AppendProperty (properties_sp->GetName(),
description,
is_global_property,
properties_sp);
return true;
}
}
return false;
}
lldb::OptionValuePropertiesSP
PluginManager::GetSettingForProcessPlugin (Debugger &debugger, const ConstString &setting_name)
{
lldb::OptionValuePropertiesSP properties_sp;
lldb::OptionValuePropertiesSP plugin_type_properties_sp (GetDebuggerPropertyForPlugins (debugger,
ConstString("process"),
ConstString(), // not creating to so we don't need the description
false));
if (plugin_type_properties_sp)
properties_sp = plugin_type_properties_sp->GetSubProperty (NULL, setting_name);
return properties_sp;
}
bool
PluginManager::CreateSettingForProcessPlugin (Debugger &debugger,
const lldb::OptionValuePropertiesSP &properties_sp,
const ConstString &description,
bool is_global_property)
{
if (properties_sp)
{
lldb::OptionValuePropertiesSP plugin_type_properties_sp (GetDebuggerPropertyForPlugins (debugger,
ConstString("platform"),
ConstString("Settings for platform plug-ins"),
ConstString("process"),
ConstString("Settings for process plug-ins"),
true));
if (plugin_type_properties_sp)
{