|
From: Ø. H. <oyv...@zy...> - 2008-09-08 09:18:03
|
Commited.
keep_alive() is basically a global kludge that wouldn't be necessary
in ideal world.
Index: C:/workspace/openocd/src/helper/log.c
===================================================================
--- C:/workspace/openocd/src/helper/log.c (revision 980)
+++ C:/workspace/openocd/src/helper/log.c (working copy)
@@ -358,6 +358,9 @@
* This function will send a keep alive packet if >500ms has passed
since last time
* it was invoked.
*
+ * Note that this function can be invoked often, so it needs to be relatively
+ * fast when invoked more often than every 500ms.
+ *
*/
void keep_alive()
{
@@ -365,18 +368,22 @@
if (current_time-last_time>1000)
{
LOG_WARNING("BUG: keep_alive() was not invoked in the 1000ms
timelimit. GDB alive packet not sent! (%lld)",
current_time-last_time);
- last_time=current_time;
- } else if (current_time-last_time>500)
+ }
+ if (current_time-last_time>500)
{
/* this will keep the GDB connection alive */
LOG_USER_N("%s", "");
+
+ /* also process TCL events (we have to do this from 'log.c' since its
+ * keep_alive() is the only routine guaranteed to be called at least
+ * once per second :( */
+ process_jim_events ();
+
+ /* process any timer events now */
+ target_call_timer_callbacks_now();
+
last_time=current_time;
}
-
- /* also process TCL events (we have to do this from 'log.c' since its
- * keep_alive() is the only routine guaranteed to be called at least
- * once per second :( */
- process_jim_events ();
}
/* reset keep alive timer without sending message */
--
Øyvind Harboe
http://www.zylin.com/zy1000.html
ARM7 ARM9 XScale Cortex
JTAG debugger and flash programmer
|