X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fcontinuations.h;h=d72735bea2776d79829983b49c9b2e8ebe8fd553;hb=2dd4d4224afba558be14b39e2886ba47b2132678;hp=aaba362f0b9bee4865a2faf483941c2bb3c3faf3;hpb=be34f8494e0befe68d8071f46edc16d9aa3c9238;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/continuations.h b/gdb/continuations.h index aaba362f0b..d72735bea2 100644 --- a/gdb/continuations.h +++ b/gdb/continuations.h @@ -1,7 +1,6 @@ /* Continuations for GDB, the GNU debugger. - Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, - 2009, 2010, 2011 Free Software Foundation, Inc. + Copyright (C) 1999-2013 Free Software Foundation, Inc. This file is part of GDB. @@ -30,8 +29,16 @@ struct inferior; 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 continuation callback functions. ARG is the + continuation argument registered in the corresponding + add_*_continuation call. ERR is true when the command should be + cancelled instead of finished normally. In that case, the + continuation should clean up whatever state had been set up for the + command in question (e.g., remove momentary breakpoints). This + happens e.g., when an error was thrown while handling a target + event, or when the inferior thread the command was being executed + on exits. */ +typedef void (continuation_ftype) (void *arg, int err); /* Prototype of the function responsible for releasing the argument passed to the continuation callback functions, either when the @@ -43,16 +50,16 @@ typedef void (continuation_free_arg_ftype) (void *); 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 do_all_continuations (int err); +extern void do_all_continuations_thread (struct thread_info *, int err); 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 do_all_intermediate_continuations (int err); +extern void do_all_intermediate_continuations_thread (struct thread_info *, int err); extern void discard_all_intermediate_continuations (void); extern void discard_all_intermediate_continuations_thread (struct thread_info *); @@ -61,7 +68,7 @@ extern void discard_all_intermediate_continuations_thread (struct thread_info *) extern void add_inferior_continuation (continuation_ftype *, void *, continuation_free_arg_ftype *); -extern void do_all_inferior_continuations (void); +extern void do_all_inferior_continuations (int err); extern void discard_all_inferior_continuations (struct inferior *inf); #endif