* simplify continuations a bit more.
@ 2011-05-27 14:58 Pedro Alves
2011-05-27 17:59 ` Tom Tromey
0 siblings, 1 reply; 5+ messages in thread
From: Pedro Alves @ 2011-05-27 14:58 UTC (permalink / raw)
To: gdb-patches
Yes more continuations love, replacing the hard to read
prototypes with function pointer typedefs ...
Applied.
Pedro Alves
2011-05-27 Pedro Alves <pedro@codesourcery.com>
gdb/
* defs.h (continuation_ftype, continuation_free_arg_ftype): New
typedefs.
(add_continuation, add_intermediate_continuation)
(add_inferior_continuation): Use them.
* continuations.c (struct continuation): Use them.
(make_continuation_ftype): Delete.
(make_continuation, add_inferior_continuation, add_continuation)
(add_intermediate_continuation): Use continuation_ftype and
continuation_free_arg_ftype. Rename parameters to shorter names.
---
gdb/continuations.c | 32 ++++++++++++++------------------
gdb/defs.h | 22 +++++++++++++++-------
2 files changed, 29 insertions(+), 25 deletions(-)
Index: src/gdb/defs.h
===================================================================
--- src.orig/gdb/defs.h 2011-05-27 15:07:35.000000000 +0100
+++ src/gdb/defs.h 2011-05-27 15:45:20.320787876 +0100
@@ -740,21 +740,29 @@ struct continuation;
struct thread_info;
struct inferior;
-/* From utils.c */
+/* 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 *,
- void (*)(void *), void *,
- void (*)(void *));
+ 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 *,
- void (*)(void *), void *,
- void (*)(void *));
+ 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);
@@ -762,9 +770,9 @@ extern void discard_all_intermediate_con
/* Inferior specific (any thread) continuations. */
-extern void add_inferior_continuation (void (*) (void *),
+extern void add_inferior_continuation (continuation_ftype *,
void *,
- void (*) (void *));
+ continuation_free_arg_ftype *);
extern void do_all_inferior_continuations (void);
extern void discard_all_inferior_continuations (struct inferior *inf);
Index: src/gdb/continuations.c
===================================================================
--- src.orig/gdb/continuations.c 2011-05-27 15:43:35.000000000 +0100
+++ src/gdb/continuations.c 2011-05-27 15:43:28.060787856 +0100
@@ -26,20 +26,18 @@
struct continuation
{
struct continuation *next;
- void (*function) (void *);
- void (*free_arg) (void *);
+ continuation_ftype *function;
+ continuation_free_arg_ftype *free_arg;
void *arg;
};
-typedef void (make_continuation_ftype) (void *);
-
/* Add a new continuation to the continuation chain. Args are
FUNCTION to run the continuation up with, and ARG to pass to
it. */
static void
make_continuation (struct continuation **pmy_chain,
- make_continuation_ftype *function,
+ continuation_ftype *function,
void *arg, void (*free_arg) (void *))
{
struct continuation *new = XNEW (struct continuation);
@@ -113,13 +111,12 @@ discard_my_continuations (struct continu
continuation will be added at the front. */
void
-add_inferior_continuation (void (*continuation_hook) (void *), void *args,
- void (*continuation_free_args) (void *))
+add_inferior_continuation (continuation_ftype *hook, void *args,
+ continuation_free_arg_ftype *free_arg)
{
struct inferior *inf = current_inferior ();
- make_continuation (&inf->continuations, continuation_hook,
- args, continuation_free_args);
+ make_continuation (&inf->continuations, hook, args, free_arg);
}
/* Do all continuations of the current inferior. */
@@ -144,11 +141,10 @@ discard_all_inferior_continuations (stru
void
add_continuation (struct thread_info *thread,
- void (*continuation_hook) (void *), void *args,
- void (*continuation_free_args) (void *))
+ continuation_ftype *hook, void *args,
+ continuation_free_arg_ftype *free_arg)
{
- make_continuation (&thread->continuations, continuation_hook,
- args, continuation_free_args);
+ make_continuation (&thread->continuations, hook, args, free_arg);
}
static void
@@ -256,12 +252,12 @@ discard_all_continuations (void)
void
add_intermediate_continuation (struct thread_info *thread,
- void (*continuation_hook)
- (void *), void *args,
- void (*continuation_free_args) (void *))
+ continuation_ftype *hook,
+ void *args,
+ continuation_free_arg_ftype *free_arg)
{
- make_continuation (&thread->intermediate_continuations, continuation_hook,
- args, continuation_free_args);
+ make_continuation (&thread->intermediate_continuations, hook,
+ args, free_arg);
}
/* Walk down the cmd_continuation list, and execute all the
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: simplify continuations a bit more.
2011-05-27 14:58 simplify continuations a bit more Pedro Alves
@ 2011-05-27 17:59 ` Tom Tromey
2011-05-27 18:28 ` Pedro Alves
0 siblings, 1 reply; 5+ messages in thread
From: Tom Tromey @ 2011-05-27 17:59 UTC (permalink / raw)
To: Pedro Alves; +Cc: gdb-patches
>>>>> "Pedro" == Pedro Alves <pedro@codesourcery.com> writes:
Pedro> Yes more continuations love, replacing the hard to read
Pedro> prototypes with function pointer typedefs ...
Thanks for this series.
Pedro> * defs.h (continuation_ftype, continuation_free_arg_ftype): New
Pedro> typedefs.
Pedro> (add_continuation, add_intermediate_continuation)
Pedro> (add_inferior_continuation): Use them.
I wouldn't mind a continuations.h.
Tom
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: simplify continuations a bit more.
2011-05-27 17:59 ` Tom Tromey
@ 2011-05-27 18:28 ` Pedro Alves
2011-05-27 18:32 ` Tom Tromey
2011-05-27 18:44 ` don't forward declare gdb_thread and inferior in defs.h (Re: simplify continuations a bit more.) Pedro Alves
0 siblings, 2 replies; 5+ messages in thread
From: Pedro Alves @ 2011-05-27 18:28 UTC (permalink / raw)
To: Tom Tromey; +Cc: gdb-patches
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
{
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: simplify continuations a bit more.
2011-05-27 18:28 ` Pedro Alves
@ 2011-05-27 18:32 ` Tom Tromey
2011-05-27 18:44 ` don't forward declare gdb_thread and inferior in defs.h (Re: simplify continuations a bit more.) Pedro Alves
1 sibling, 0 replies; 5+ messages in thread
From: Tom Tromey @ 2011-05-27 18:32 UTC (permalink / raw)
To: Pedro Alves; +Cc: gdb-patches
Tom> I wouldn't mind a continuations.h.
Pedro> There you go. :-)
Thanks very much!
Tom
^ permalink raw reply [flat|nested] 5+ messages in thread
* don't forward declare gdb_thread and inferior in defs.h (Re: simplify continuations a bit more.)
2011-05-27 18:28 ` Pedro Alves
2011-05-27 18:32 ` Tom Tromey
@ 2011-05-27 18:44 ` Pedro Alves
1 sibling, 0 replies; 5+ messages in thread
From: Pedro Alves @ 2011-05-27 18:44 UTC (permalink / raw)
To: gdb-patches; +Cc: Tom Tromey
On Friday 27 May 2011 19:27:50, Pedro Alves wrote:
> (can't remove the struct thread_info and struct inferior
> forward declarations from defs.h without more changes)
Looked worse than it really is on first look. Not much is relying
on those since they were put there in 2008.
Built an --enable-targets=all gdb on x86_64-linux successfully and applied.
--
Pedro Alves
2011-05-27 Pedro Alves <pedro@codesourcery.com>
gdb/
* defs.h (struct thread_info, struct inferior): Delete forward
declarations.
* breakpoint.h (struct thread_info): New forward declaration.
* observer.sh (struct inferior): New forward declaration.
* python/python-internal.h (struct inferior): New forward
declaration.
---
gdb/breakpoint.h | 1 +
gdb/defs.h | 3 ---
gdb/observer.sh | 1 +
gdb/python/python-internal.h | 1 +
4 files changed, 3 insertions(+), 3 deletions(-)
Index: src/gdb/defs.h
===================================================================
--- src.orig/gdb/defs.h 2011-05-27 19:25:28.000000000 +0100
+++ src/gdb/defs.h 2011-05-27 19:29:26.760790228 +0100
@@ -730,9 +730,6 @@ extern struct command_line *read_command
extern void free_command_lines (struct command_line **);
-struct thread_info;
-struct inferior;
-
/* String containing the current directory (what getwd would return). */
extern char *current_directory;
Index: src/gdb/breakpoint.h
===================================================================
--- src.orig/gdb/breakpoint.h 2011-05-27 19:24:06.000000000 +0100
+++ src/gdb/breakpoint.h 2011-05-27 19:30:17.120790237 +0100
@@ -29,6 +29,7 @@ struct value;
struct block;
struct breakpoint_object;
struct get_number_or_range_state;
+struct thread_info;
/* This is the maximum number of bytes a breakpoint instruction can
take. Feel free to increase it. It's just used in a few places to
Index: src/gdb/observer.sh
===================================================================
--- src.orig/gdb/observer.sh 2011-01-13 15:07:31.000000000 +0000
+++ src/gdb/observer.sh 2011-05-27 19:31:25.280790248 +0100
@@ -64,6 +64,7 @@ struct bpstats;
struct so_list;
struct objfile;
struct thread_info;
+struct inferior;
EOF
;;
esac
Index: src/gdb/python/python-internal.h
===================================================================
--- src.orig/gdb/python/python-internal.h 2011-03-01 16:00:18.000000000 +0000
+++ src/gdb/python/python-internal.h 2011-05-27 19:35:28.510790291 +0100
@@ -106,6 +106,7 @@ struct value;
struct language_defn;
struct program_space;
struct bpstats;
+struct inferior;
extern PyObject *gdb_module;
extern PyTypeObject value_object_type;
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2011-05-27 18:44 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-05-27 14:58 simplify continuations a bit more Pedro Alves
2011-05-27 17:59 ` Tom Tromey
2011-05-27 18:28 ` Pedro Alves
2011-05-27 18:32 ` Tom Tromey
2011-05-27 18:44 ` don't forward declare gdb_thread and inferior in defs.h (Re: simplify continuations a bit more.) Pedro Alves
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox