You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#include <signal.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <sys/wait.h>
-#include "defs.h"
+ Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
/* An event loop listens for events from multiple event sources. When
an event arrives, it is queued and processed by calling the
typedef PTR gdb_client_data;
typedef struct gdb_event gdb_event;
-typedef void (file_handler_func) PARAMS ((gdb_client_data, int mask));
-typedef void (async_handler_func) PARAMS ((gdb_client_data));
+typedef void (handler_func) PARAMS ((gdb_client_data));
typedef void (event_handler_func) PARAMS ((int));
/* Event for the GDB event system. Events are queued by calling
int mask; /* Events we want to monitor: POLLIN, etc. */
int ready_mask; /* Events that have been seen since
the last time. */
- file_handler_func *proc; /* Procedure to call when fd is ready. */
+ handler_func *proc; /* Procedure to call when fd is ready. */
gdb_client_data client_data; /* Argument to pass to proc. */
struct file_handler *next_file; /* Next registered file descriptor. */
}
typedef struct async_signal_handler
{
- int ready; /* If ready, call this handler from the main event loop,
+ int ready; /* If ready, call this handler from the main event loop,
using invoke_async_handler. */
struct async_signal_handler *next_handler; /* Ptr to next handler */
- async_handler_func *proc; /* Function to call to do the work */
+ handler_func *proc; /* Function to call to do the work */
gdb_client_data client_data; /* Argument to async_handler_func */
}
async_signal_handler;
TAIL,
/* Add at head of queue. It will be processed in last in first out
order. */
- HEAD
+ HEAD
}
queue_position;
#define PREFIX(X) the_prompts.prompt_stack[the_prompts.top + X].prefix
#define SUFFIX(X) the_prompts.prompt_stack[the_prompts.top + X].suffix
+/* Exported functions from event-loop.c */
+
+extern void start_event_loop PARAMS ((void));
extern void delete_file_handler PARAMS ((int));
-extern void
- create_file_handler PARAMS ((int, int, file_handler_func, gdb_client_data));
-extern int gdb_do_one_event PARAMS ((void));
+extern void add_file_handler PARAMS ((int, void (*) (void), gdb_client_data));
extern void mark_async_signal_handler PARAMS ((async_signal_handler *));
-extern async_signal_handler *
- create_async_signal_handler PARAMS ((async_handler_func *, gdb_client_data));
-
+extern async_signal_handler *
+ create_async_signal_handler PARAMS ((handler_func *, gdb_client_data));
+extern void delete_async_signal_handler PARAMS ((async_signal_handler ** async_handler_ptr));
+extern gdb_event *create_file_event PARAMS ((int));
+
+/* Exported functions from event-top.c.
+ FIXME: these should really go into top.h. */
+
+extern void display_gdb_prompt PARAMS ((char *));
+extern void async_init_signals PARAMS ((void));
+extern void set_async_editing_command PARAMS ((char *, int, struct cmd_list_element *));
+extern void set_async_annotation_level PARAMS ((char *, int, struct cmd_list_element *));
+extern void set_async_prompt PARAMS ((char *, int, struct cmd_list_element *));
+extern void handle_stop_sig PARAMS ((int));
+extern void handle_sigint PARAMS ((int));
+extern void pop_prompt PARAMS ((void));
+extern void push_prompt PARAMS ((char *, char *, char *));
+extern void gdb_readline2 PARAMS ((void));
+extern void mark_async_signal_handler_wrapper (void *);
+extern void async_request_quit (gdb_client_data);
+
+/* Exported variables from event-top.c.
+ FIXME: these should really go into top.h. */
+
+extern int async_command_editing_p;
+extern int exec_done_display_p;
+extern char *async_annotation_suffix;
+extern char *new_async_prompt;
+extern struct prompts the_prompts;
+extern void (*call_readline) PARAMS ((void));
+extern void (*input_handler) PARAMS ((char *));
+extern int input_fd;