This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: simplify continuations a bit more.
On Friday 27 May 2011 18:59:28, Tom Tromey wrote:
> I wouldn't mind a continuations.h.
There you go. :-)
Applied.
(can't remove the struct thread_info and struct inferior
forward declarations from defs.h without more changes)
--
Pedro Alves
2011-05-27 Pedro Alves <pedro@codesourcery.com>
gdb/
* defs.h (struct continuation, continuation_ftype)
(continuation_free_arg_ftype, add_continuation)
(do_all_continuations, do_all_continuations_thread)
(discard_all_continuations, discard_all_continuations_thread)
(add_intermediate_continuation, do_all_intermediate_continuations)
(do_all_intermediate_continuations_thread)
(discard_all_intermediate_continuations)
(discard_all_intermediate_continuations_thread)
(add_inferior_continuation, do_all_inferior_continuations)
(discard_all_inferior_continuations): Move to ...
* continuations.h: ... this new file.
* breakpoint.c, continuations.c, event-top.c, inf-loop.c,
infcmd.c, inferior.c, infrun.c, interps.c: Include
continuations.h.
---
gdb/breakpoint.c | 1
gdb/continuations.c | 1
gdb/continuations.h | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++
gdb/defs.h | 43 ---------------------------------
gdb/event-top.c | 2 -
gdb/inf-loop.c | 1
gdb/infcmd.c | 1
gdb/inferior.c | 1
gdb/infrun.c | 1
gdb/interps.c | 1
10 files changed, 75 insertions(+), 44 deletions(-)
Index: src/gdb/defs.h
===================================================================
--- src.orig/gdb/defs.h 2011-05-27 19:24:06.370790172 +0100
+++ src/gdb/defs.h 2011-05-27 19:24:07.680790172 +0100
@@ -730,52 +730,9 @@ extern struct command_line *read_command
extern void free_command_lines (struct command_line **);
-/* To continue the execution commands when running gdb asynchronously.
- A continuation structure contains a pointer to a function to be called
- to finish the command, once the target has stopped. Such mechanism is
- used by the finish and until commands, and in the remote protocol
- when opening an extended-remote connection. */
-
-struct continuation;
struct thread_info;
struct inferior;
-/* From continuations.c */
-
-/* Prototype of the continuation callback functions. */
-typedef void (continuation_ftype) (void *);
-
-/* Prototype of the function responsible for releasing the argument
- passed to the continuation callback functions, either when the
- continuation is called, or discarded. */
-typedef void (continuation_free_arg_ftype) (void *);
-
-/* Thread specific continuations. */
-
-extern void add_continuation (struct thread_info *,
- continuation_ftype *, void *,
- continuation_free_arg_ftype *);
-extern void do_all_continuations (void);
-extern void do_all_continuations_thread (struct thread_info *);
-extern void discard_all_continuations (void);
-extern void discard_all_continuations_thread (struct thread_info *);
-
-extern void add_intermediate_continuation (struct thread_info *,
- continuation_ftype *, void *,
- continuation_free_arg_ftype *);
-extern void do_all_intermediate_continuations (void);
-extern void do_all_intermediate_continuations_thread (struct thread_info *);
-extern void discard_all_intermediate_continuations (void);
-extern void discard_all_intermediate_continuations_thread (struct thread_info *);
-
-/* Inferior specific (any thread) continuations. */
-
-extern void add_inferior_continuation (continuation_ftype *,
- void *,
- continuation_free_arg_ftype *);
-extern void do_all_inferior_continuations (void);
-extern void discard_all_inferior_continuations (struct inferior *inf);
-
/* String containing the current directory (what getwd would return). */
extern char *current_directory;
Index: src/gdb/continuations.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ src/gdb/continuations.h 2011-05-27 19:24:07.680790172 +0100
@@ -0,0 +1,67 @@
+/* Continuations for GDB, the GNU debugger.
+
+ Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008,
+ 2009, 2010, 2011 Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef CONTINUATIONS_H
+#define CONTINUATIONS_H
+
+struct thread_info;
+struct inferior;
+
+/* To continue the execution commands when running gdb asynchronously.
+ A continuation structure contains a pointer to a function to be called
+ to finish the command, once the target has stopped. Such mechanism is
+ used by the finish and until commands, and in the remote protocol
+ when opening an extended-remote connection. */
+
+/* Prototype of the continuation callback functions. */
+typedef void (continuation_ftype) (void *);
+
+/* Prototype of the function responsible for releasing the argument
+ passed to the continuation callback functions, either when the
+ continuation is called, or discarded. */
+typedef void (continuation_free_arg_ftype) (void *);
+
+/* Thread specific continuations. */
+
+extern void add_continuation (struct thread_info *,
+ continuation_ftype *, void *,
+ continuation_free_arg_ftype *);
+extern void do_all_continuations (void);
+extern void do_all_continuations_thread (struct thread_info *);
+extern void discard_all_continuations (void);
+extern void discard_all_continuations_thread (struct thread_info *);
+
+extern void add_intermediate_continuation (struct thread_info *,
+ continuation_ftype *, void *,
+ continuation_free_arg_ftype *);
+extern void do_all_intermediate_continuations (void);
+extern void do_all_intermediate_continuations_thread (struct thread_info *);
+extern void discard_all_intermediate_continuations (void);
+extern void discard_all_intermediate_continuations_thread (struct thread_info *);
+
+/* Inferior specific (any thread) continuations. */
+
+extern void add_inferior_continuation (continuation_ftype *,
+ void *,
+ continuation_free_arg_ftype *);
+extern void do_all_inferior_continuations (void);
+extern void discard_all_inferior_continuations (struct inferior *inf);
+
+#endif
Index: src/gdb/breakpoint.c
===================================================================
--- src.orig/gdb/breakpoint.c 2011-05-27 19:24:06.370790172 +0100
+++ src/gdb/breakpoint.c 2011-05-27 19:24:07.690790172 +0100
@@ -64,6 +64,7 @@
#include "xml-syscall.h"
#include "parser-defs.h"
#include "cli/cli-utils.h"
+#include "continuations.h"
/* readline include files */
#include "readline/readline.h"
Index: src/gdb/continuations.c
===================================================================
--- src.orig/gdb/continuations.c 2011-05-27 19:24:06.380790172 +0100
+++ src/gdb/continuations.c 2011-05-27 19:24:07.690790172 +0100
@@ -22,6 +22,7 @@
#include "defs.h"
#include "gdbthread.h"
#include "inferior.h"
+#include "continuations.h"
struct continuation
{
Index: src/gdb/event-top.c
===================================================================
--- src.orig/gdb/event-top.c 2011-05-27 19:24:06.370790172 +0100
+++ src/gdb/event-top.c 2011-05-27 19:24:07.690790172 +0100
@@ -33,7 +33,7 @@
#include "cli/cli-script.h" /* for reset_command_nest_depth */
#include "main.h"
#include "gdbthread.h"
-
+#include "continuations.h"
#include "gdbcmd.h" /* for dont_repeat() */
/* readline include files. */
Index: src/gdb/inf-loop.c
===================================================================
--- src.orig/gdb/inf-loop.c 2011-05-27 19:24:06.370790172 +0100
+++ src/gdb/inf-loop.c 2011-05-27 19:24:07.690790172 +0100
@@ -28,6 +28,7 @@
#include "exceptions.h"
#include "language.h"
#include "gdbthread.h"
+#include "continuations.h"
static int fetch_inferior_event_wrapper (gdb_client_data client_data);
Index: src/gdb/infcmd.c
===================================================================
--- src.orig/gdb/infcmd.c 2011-05-27 19:24:06.380790172 +0100
+++ src/gdb/infcmd.c 2011-05-27 19:24:07.690790172 +0100
@@ -56,6 +56,7 @@
#include "inline-frame.h"
#include "tracepoint.h"
#include "inf-loop.h"
+#include "continuations.h"
/* Functions exported for general use, in inferior.h: */
Index: src/gdb/inferior.c
===================================================================
--- src.orig/gdb/inferior.c 2011-05-27 19:24:06.380790172 +0100
+++ src/gdb/inferior.c 2011-05-27 19:24:07.690790172 +0100
@@ -31,6 +31,7 @@
#include "symfile.h"
#include "environ.h"
#include "cli/cli-utils.h"
+#include "continuations.h"
void _initialize_inferiors (void);
Index: src/gdb/infrun.c
===================================================================
--- src.orig/gdb/infrun.c 2011-05-27 19:24:06.370790172 +0100
+++ src/gdb/infrun.c 2011-05-27 19:24:07.700790172 +0100
@@ -54,6 +54,7 @@
#include "inline-frame.h"
#include "jit.h"
#include "tracepoint.h"
+#include "continuations.h"
/* Prototypes for local functions */
Index: src/gdb/interps.c
===================================================================
--- src.orig/gdb/interps.c 2011-05-27 19:24:06.380790172 +0100
+++ src/gdb/interps.c 2011-05-27 19:24:07.700790172 +0100
@@ -41,6 +41,7 @@
#include "gdb_assert.h"
#include "top.h" /* For command_loop. */
#include "exceptions.h"
+#include "continuations.h"
struct interp
{