From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2317 invoked by alias); 27 May 2011 18:28:21 -0000 Received: (qmail 2295 invoked by uid 22791); 27 May 2011 18:28:20 -0000 X-SWARE-Spam-Status: No, hits=-1.9 required=5.0 tests=AWL,BAYES_00,TW_TW,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail.codesourcery.com (HELO mail.codesourcery.com) (38.113.113.100) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 27 May 2011 18:27:55 +0000 Received: (qmail 26143 invoked from network); 27 May 2011 18:27:54 -0000 Received: from unknown (HELO scottsdale.localnet) (pedro@127.0.0.2) by mail.codesourcery.com with ESMTPA; 27 May 2011 18:27:54 -0000 From: Pedro Alves To: Tom Tromey Subject: Re: simplify continuations a bit more. Date: Fri, 27 May 2011 18:28:00 -0000 User-Agent: KMail/1.13.6 (Linux/2.6.38-8-generic; KDE/4.6.2; x86_64; ; ) Cc: gdb-patches@sourceware.org References: <201105271557.33330.pedro@codesourcery.com> In-Reply-To: MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201105271927.51070.pedro@codesourcery.com> X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2011-05/txt/msg00650.txt.bz2 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 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 . */ + +#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 {