From 6e5f32684a9a1d614cc5f5ebae52def1a55f5626 Mon Sep 17 00:00:00 2001 From: Mikhail Khodjaiants Date: Wed, 17 Apr 2013 12:19:36 -0400 Subject: [PATCH] Bug 405899 - Allow to customize the interrupt timeout Change-Id: I4cc34d8404285ea468fff0aff8240e327b8bdb4f Reviewed-on: https://git.eclipse.org/r/11987 Reviewed-by: Marc Khouzam Reviewed-by: Mikhail Khodjaiants IP-Clean: Mikhail Khodjaiants Tested-by: Mikhail Khodjaiants --- .../eclipse/cdt/dsf/gdb/service/GDBRunControl.java | 14 +++++++++++--- .../cdt/dsf/gdb/service/GDBRunControl_7_0.java | 2 +- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBRunControl.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBRunControl.java index cd180e3614d..c8fa3ba586b 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBRunControl.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBRunControl.java @@ -152,6 +152,7 @@ public class GDBRunControl extends MIRunControl { @Override protected void handleSuccess() { if (getData()) { + int interruptTimeout = getInterruptTimeout(); // A local Windows attach session requires us to interrupt // the inferior instead of gdb. This deficiency was fixed // in gdb 7.0. Note that there's a GDBRunControl_7_0, @@ -164,15 +165,15 @@ public class GDBRunControl extends MIRunControl { IMIProcessDMContext processDmc = DMContexts.getAncestorOfType(context, IMIProcessDMContext.class); String inferiorPid = processDmc.getProcId(); if (inferiorPid != null) { - fGdb.interruptInferiorAndWait(Long.parseLong(inferiorPid), IGDBBackend.INTERRUPT_TIMEOUT_DEFAULT, rm); + fGdb.interruptInferiorAndWait(Long.parseLong(inferiorPid), interruptTimeout, rm); } else { assert false : "why don't we have the inferior's pid?"; //$NON-NLS-1$ - fGdb.interruptAndWait(IGDBBackend.INTERRUPT_TIMEOUT_DEFAULT, rm); + fGdb.interruptAndWait(interruptTimeout, rm); } } else { - fGdb.interruptAndWait(IGDBBackend.INTERRUPT_TIMEOUT_DEFAULT, rm); + fGdb.interruptAndWait(interruptTimeout, rm); } } else { rm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, INVALID_STATE, "Context cannot be suspended.", null)); //$NON-NLS-1$ @@ -428,4 +429,11 @@ public class GDBRunControl extends MIRunControl { super.eventDispatched(e); } + + /** + * @since 4.2 + */ + protected int getInterruptTimeout() { + return IGDBBackend.INTERRUPT_TIMEOUT_DEFAULT; + } } diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBRunControl_7_0.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBRunControl_7_0.java index d7a24a190a0..db5ce0e7a42 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBRunControl_7_0.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBRunControl_7_0.java @@ -138,7 +138,7 @@ public class GDBRunControl_7_0 extends GDBRunControl implements IReverseRunContr @Override protected void handleSuccess() { if (getData()) { - fGdb.interruptAndWait(IGDBBackend.INTERRUPT_TIMEOUT_DEFAULT, rm); + fGdb.interruptAndWait(getInterruptTimeout(), rm); } else { rm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, INVALID_STATE, "Context cannot be suspended.", null)); //$NON-NLS-1$ rm.done();