OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [gdb-5.0/] [gdb/] [event-top.h] - Diff between revs 105 and 1765

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 105 Rev 1765
/* Definitions used by GDB event-top.c.
/* Definitions used by GDB event-top.c.
   Copyright 1999 Free Software Foundation, Inc.
   Copyright 1999 Free Software Foundation, Inc.
   Written by Elena Zannoni <ezannoni@cygnus.com> of Cygnus Solutions.
   Written by Elena Zannoni <ezannoni@cygnus.com> of Cygnus Solutions.
 
 
   This file is part of GDB.
   This file is part of GDB.
 
 
   This program is free software; you can redistribute it and/or modify
   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
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2 of the License, or
   the Free Software Foundation; either version 2 of the License, or
   (at your option) any later version.
   (at your option) any later version.
 
 
   This program is distributed in the hope that it will be useful,
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.
   GNU General Public License for more details.
 
 
   You should have received a copy of the GNU General Public License
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   along with this program; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place - Suite 330,
   Foundation, Inc., 59 Temple Place - Suite 330,
   Boston, MA 02111-1307, USA.  */
   Boston, MA 02111-1307, USA.  */
 
 
/* Stack for prompts. Each prompt is composed as a prefix, a prompt
/* Stack for prompts. Each prompt is composed as a prefix, a prompt
   and a suffix. The prompt to be displayed at any given time is the
   and a suffix. The prompt to be displayed at any given time is the
   one on top of the stack.  A stack is necessary because of cases in
   one on top of the stack.  A stack is necessary because of cases in
   which the execution of a gdb command requires further input from
   which the execution of a gdb command requires further input from
   the user, like for instance 'commands' for breakpoints and
   the user, like for instance 'commands' for breakpoints and
   'actions' for tracepoints. In these cases, the prompt is '>' and
   'actions' for tracepoints. In these cases, the prompt is '>' and
   gdb should process input using the asynchronous readline interface
   gdb should process input using the asynchronous readline interface
   and the event loop.  In order to achieve this, we need to save
   and the event loop.  In order to achieve this, we need to save
   somewhere the state of GDB, i.e. that it is processing user input
   somewhere the state of GDB, i.e. that it is processing user input
   as part of a command and not as part of the top level command loop.
   as part of a command and not as part of the top level command loop.
   The prompt stack represents part of the saved state. Another part
   The prompt stack represents part of the saved state. Another part
   would be the function that readline would invoke after a whole line
   would be the function that readline would invoke after a whole line
   of input has ben entered. This second piece would be something
   of input has ben entered. This second piece would be something
   like, for instance, where to return within the code for the actions
   like, for instance, where to return within the code for the actions
   commands after a line has been read.  This latter portion has not
   commands after a line has been read.  This latter portion has not
   beeen implemented yet.  The need for a 3-part prompt arises from
   beeen implemented yet.  The need for a 3-part prompt arises from
   the annotation level. When this is set to 2, the prompt is actually
   the annotation level. When this is set to 2, the prompt is actually
   composed of a prefix, the prompt itself and a suffix. */
   composed of a prefix, the prompt itself and a suffix. */
 
 
/* At any particular time there will be always at least one prompt on
/* At any particular time there will be always at least one prompt on
   the stack, the one being currently displayed by gdb. If gdb is
   the stack, the one being currently displayed by gdb. If gdb is
   using annotation level equal 2, there will be 2 prompts on the
   using annotation level equal 2, there will be 2 prompts on the
   stack: the usual one, w/o prefix and suffix (at top - 1), and the
   stack: the usual one, w/o prefix and suffix (at top - 1), and the
   'composite' one with prefix and suffix added (at top). At this
   'composite' one with prefix and suffix added (at top). At this
   time, this is the only use of the prompt stack. Resetting annotate
   time, this is the only use of the prompt stack. Resetting annotate
   to 0 or 1, pops the top of the stack, resetting its size to one
   to 0 or 1, pops the top of the stack, resetting its size to one
   element. The MAXPROMPTS limit is safe, for now. Once other cases
   element. The MAXPROMPTS limit is safe, for now. Once other cases
   are dealt with (like the different prompts used for 'commands' or
   are dealt with (like the different prompts used for 'commands' or
   'actions') this array implementation of the prompt stack may have
   'actions') this array implementation of the prompt stack may have
   to change. */
   to change. */
 
 
#define MAXPROMPTS 10
#define MAXPROMPTS 10
struct prompts
struct prompts
  {
  {
    struct
    struct
      {
      {
        char *prefix;
        char *prefix;
        char *prompt;
        char *prompt;
        char *suffix;
        char *suffix;
      }
      }
    prompt_stack[MAXPROMPTS];
    prompt_stack[MAXPROMPTS];
    int top;
    int top;
  };
  };
 
 
#define PROMPT(X) the_prompts.prompt_stack[the_prompts.top + X].prompt
#define PROMPT(X) the_prompts.prompt_stack[the_prompts.top + X].prompt
#define PREFIX(X) the_prompts.prompt_stack[the_prompts.top + X].prefix
#define PREFIX(X) the_prompts.prompt_stack[the_prompts.top + X].prefix
#define SUFFIX(X) the_prompts.prompt_stack[the_prompts.top + X].suffix
#define SUFFIX(X) the_prompts.prompt_stack[the_prompts.top + X].suffix
 
 
/* Exported functions from event-top.c.
/* Exported functions from event-top.c.
   FIXME: these should really go into top.h. */
   FIXME: these should really go into top.h. */
 
 
extern void display_gdb_prompt (char *new_prompt);
extern void display_gdb_prompt (char *new_prompt);
extern void async_init_signals (void);
extern void async_init_signals (void);
extern void set_async_editing_command (char *args, int from_tty, struct cmd_list_element *c);
extern void set_async_editing_command (char *args, int from_tty, struct cmd_list_element *c);
extern void set_async_annotation_level (char *args, int from_tty, struct cmd_list_element *c);
extern void set_async_annotation_level (char *args, int from_tty, struct cmd_list_element *c);
extern void set_async_prompt (char *args, int from_tty, struct cmd_list_element *c);
extern void set_async_prompt (char *args, int from_tty, struct cmd_list_element *c);
 
 
/* Signal to catch ^Z typed while reading a command: SIGTSTP or SIGCONT.  */
/* Signal to catch ^Z typed while reading a command: SIGTSTP or SIGCONT.  */
#ifndef STOP_SIGNAL
#ifndef STOP_SIGNAL
#ifdef SIGTSTP
#ifdef SIGTSTP
#define STOP_SIGNAL SIGTSTP
#define STOP_SIGNAL SIGTSTP
extern void handle_stop_sig (int sig);
extern void handle_stop_sig (int sig);
#endif
#endif
#endif
#endif
extern void handle_sigint (int sig);
extern void handle_sigint (int sig);
extern void pop_prompt (void);
extern void pop_prompt (void);
extern void push_prompt (char *prefix, char *prompt, char *suffix);
extern void push_prompt (char *prefix, char *prompt, char *suffix);
extern void gdb_readline2 (void *client_data);
extern void gdb_readline2 (void *client_data);
extern void mark_async_signal_handler_wrapper (void *token);
extern void mark_async_signal_handler_wrapper (void *token);
extern void async_request_quit (void *arg);
extern void async_request_quit (void *arg);
extern void stdin_event_handler (int error, void *client_data);
extern void stdin_event_handler (int error, void *client_data);
extern void async_disable_stdin (void);
extern void async_disable_stdin (void);
extern void async_enable_stdin (void *dummy);
extern void async_enable_stdin (void *dummy);
 
 
/* Exported variables from event-top.c.
/* Exported variables from event-top.c.
   FIXME: these should really go into top.h. */
   FIXME: these should really go into top.h. */
 
 
extern int async_command_editing_p;
extern int async_command_editing_p;
extern int exec_done_display_p;
extern int exec_done_display_p;
extern char *async_annotation_suffix;
extern char *async_annotation_suffix;
extern char *new_async_prompt;
extern char *new_async_prompt;
extern struct prompts the_prompts;
extern struct prompts the_prompts;
extern void (*call_readline) (void *);
extern void (*call_readline) (void *);
extern void (*input_handler) (char *);
extern void (*input_handler) (char *);
extern int input_fd;
extern int input_fd;
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.