Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Pedro Alves <pedro@codesourcery.com>
To: gdb-patches@sourceware.org
Subject: simplify continuations a bit more.
Date: Fri, 27 May 2011 14:58:00 -0000	[thread overview]
Message-ID: <201105271557.33330.pedro@codesourcery.com> (raw)

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


             reply	other threads:[~2011-05-27 14:58 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-27 14:58 Pedro Alves [this message]
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

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201105271557.33330.pedro@codesourcery.com \
    --to=pedro@codesourcery.com \
    --cc=gdb-patches@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox