diff options
author | Pedro Alves <palves@redhat.com> | 2008-09-08 21:57:42 +0000 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2008-09-08 21:57:42 +0000 |
commit | 95e54da724be3b6673da2432d0613e163be03db3 (patch) | |
tree | bf4bbf09a3d60fb10e4c05534f61378ecc436047 /gdb/infcmd.c | |
parent | 414c69f7a7e241fd4a4cb85535d864d48ddbee1f (diff) | |
download | gdb-95e54da724be3b6673da2432d0613e163be03db3.zip gdb-95e54da724be3b6673da2432d0613e163be03db3.tar.gz gdb-95e54da724be3b6673da2432d0613e163be03db3.tar.bz2 |
Remove global continuations in favour of a per-thread
continuations.
* gdbthread.h (struct thread_info): Add comments around
continuations and intermediate_continuations.
(save_infrun_state, load_infrun_state): Delete continuations and
intermediate_continuations arguments.
* infrun.c (fetch_inferior_event): Only call normal_stop if
stop_soon is NO_STOP_QUIETLY.
(context_switch): Don't context-switch the continuations.
* thread.c (clear_thread_inferior_resources): Discard all
continuations of the thread we're clearing.
(save_infrun_state, load_infrun_state): Delete continuations and
intermediate_continuations arguments, and the code referencing
them.
* utils.c: Include "gdbthread.h".
(cmd_continuation, intermediate_continuation): Delete.
(add_continuation): Add thread_info* argument. Install the
continuation on it.
(restore_thread_cleanup): New.
(do_all_continuations_ptid, do_all_continuations_thread_callback):
New.
(do_all_continuations): Reimplement.
(discard_all_continuations_thread_callback,
discard_all_continuations_thread): New.
(discard_all_continuations): Reimplement.
(add_intermediate_continuation): Add thread_info* argument.
Install the continuation on it.
(do_all_intermediate_continuations_thread_callback)
(do_all_intermediate_continuations_thread): New.
(do_all_intermediate_continuations): Reimplement.
(discard_all_intermediate_continuations_thread_callback): New.
(discard_all_intermediate_continuations_thread): New.
(discard_all_intermediate_continuations): Reimplement.
* breakpoint.c (until_break_command): Install the continuation on
the current thread.
* defs.h (cmd_continuation, intermediate_continuation): Delete.
(struct thread_info): Forward declare.
(add_continuation, add_intermediate_continuation): Add
thread_info* argument.
(do_all_continuations_thread, discard_all_continuations_thread)
(do_all_intermediate_continuations_thread)
(discard_all_intermediate_continuations_thread): Declare.
* inf-loop.c (inferior_event_handler): In non-stop only run
continuations on the thread that stopped. In all-stop, run
continuations on all threads.
* infcmd.c (step_once, finish_command): Adjust.
Diffstat (limited to 'gdb/infcmd.c')
-rw-r--r-- | gdb/infcmd.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/gdb/infcmd.c b/gdb/infcmd.c index a4c6c94..8bcfd63 100644 --- a/gdb/infcmd.c +++ b/gdb/infcmd.c @@ -947,7 +947,7 @@ which has no line number information.\n"), name); if (skip_subroutines) tp->step_over_calls = STEP_OVER_ALL; - inferior_thread ()->step_multi = (count > 1); + tp->step_multi = (count > 1); proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 1); args = xmalloc (sizeof (*args)); @@ -955,7 +955,7 @@ which has no line number information.\n"), name); args->single_inst = single_inst; args->count = count; args->thread = thread; - add_intermediate_continuation (step_1_continuation, args, xfree); + add_intermediate_continuation (tp, step_1_continuation, args, xfree); } } @@ -1440,7 +1440,7 @@ finish_command (char *arg, int from_tty) cargs->breakpoint = breakpoint; cargs->function = function; - add_continuation (finish_command_continuation, cargs, + add_continuation (tp, finish_command_continuation, cargs, finish_command_continuation_free_arg); discard_cleanups (old_chain); @@ -2103,7 +2103,8 @@ attach_command (char *args, int from_tty) a->args = xstrdup (args); a->from_tty = from_tty; a->async_exec = async_exec; - add_continuation (attach_command_continuation, a, + add_continuation (inferior_thread (), + attach_command_continuation, a, attach_command_continuation_free_args); return; } |