diff options
author | Pedro Alves <palves@redhat.com> | 2011-05-27 14:56:14 +0000 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2011-05-27 14:56:14 +0000 |
commit | b0f260d61e5b5b3de1fcac6042f4b225bf132d45 (patch) | |
tree | d6c6d60e9d6cd28a97de2f461c56cf88a5b4b77c | |
parent | 2011-05-27 Pedro Alves <pedro@codesourcery.com> (diff) | |
download | binutils-gdb-b0f260d61e5b5b3de1fcac6042f4b225bf132d45.tar.gz binutils-gdb-b0f260d61e5b5b3de1fcac6042f4b225bf132d45.tar.bz2 binutils-gdb-b0f260d61e5b5b3de1fcac6042f4b225bf132d45.zip |
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.
-rw-r--r-- | gdb/ChangeLog | 12 | ||||
-rw-r--r-- | gdb/continuations.c | 32 | ||||
-rw-r--r-- | gdb/defs.h | 22 |
3 files changed, 41 insertions, 25 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 39a889a28a9..2e6f3ffddd3 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,17 @@ 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. (do_my_continuations): Rename to ... (do_my_continuations_1): ... this. Remove old_chain parameter and diff --git a/gdb/continuations.c b/gdb/continuations.c index 2601a2347c4..1f5c8a466ae 100644 --- a/gdb/continuations.c +++ b/gdb/continuations.c @@ -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 continuation **list) 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 (struct inferior *inf) 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 diff --git a/gdb/defs.h b/gdb/defs.h index 38a2fcf98c0..7deee6927ac 100644 --- a/gdb/defs.h +++ b/gdb/defs.h @@ -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_continuations_thread (struct thread_info *) /* 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); |