+2011-05-27  Pedro Alves  <pedro@codesourcery.com>
+
+       * 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.
+
 2011-05-27  Pedro Alves  <pedro@codesourcery.com>
 
        * continuations.c (make_continuation): Make it return void.
 
 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);
    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.  */
 
 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
 
 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
 
 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);
 
 /* 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);