diff options
author | Tom Tromey <tom@tromey.com> | 2020-04-13 12:42:59 -0600 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2020-04-13 14:10:04 -0600 |
commit | 93b54c8ed3644a6604c5244faddf5dae7f60a743 (patch) | |
tree | 1db8cfd6f1f7c967270b9f396622848d179235d5 /gdb/async-event.h | |
parent | c1cd3163d99efe4f7cbe7f228859fd93f28e06bb (diff) | |
download | gdb-93b54c8ed3644a6604c5244faddf5dae7f60a743.zip gdb-93b54c8ed3644a6604c5244faddf5dae7f60a743.tar.gz gdb-93b54c8ed3644a6604c5244faddf5dae7f60a743.tar.bz2 |
Introduce async-event.[ch]
This patch splits out some gdb-specific code from event-loop, into new
files async-event.[ch]. Strictly speaking this code could perhaps be
put into gdbsupport/, but because gdbserver does not currently use it,
it seemed better, for size reasons, to split it out.
gdb/ChangeLog
2020-04-13 Tom Tromey <tom@tromey.com>
* tui/tui-win.c: Include async-event.h.
* remote.c: Include async-event.h.
* remote-notif.c: Include async-event.h.
* record-full.c: Include async-event.h.
* record-btrace.c: Include async-event.h.
* infrun.c: Include async-event.h.
* event-top.c: Include async-event.h.
* event-loop.h: Move some declarations to async-event.h.
* event-loop.c: Don't include ser-event.h or top.h. Move some
code to async-event.c.
* async-event.h: New file.
* async-event.c: New file.
* Makefile.in (COMMON_SFILES): Add async-event.c.
(HFILES_NO_SRCDIR): Add async-event.h.
Diffstat (limited to 'gdb/async-event.h')
-rw-r--r-- | gdb/async-event.h | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/gdb/async-event.h b/gdb/async-event.h new file mode 100644 index 0000000..408f776 --- /dev/null +++ b/gdb/async-event.h @@ -0,0 +1,71 @@ +/* Async events for the GDB event loop. + Copyright (C) 1999-2019 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 <http://www.gnu.org/licenses/>. */ + +#ifndef ASYNC_EVENT_H +#define ASYNC_EVENT_H + +#include "event-loop.h" + +struct async_signal_handler; +struct async_event_handler; +typedef void (sig_handler_func) (gdb_client_data); +typedef void (async_event_handler_func) (gdb_client_data); + +extern struct async_signal_handler * + create_async_signal_handler (sig_handler_func *proc, + gdb_client_data client_data); +extern void delete_async_signal_handler (struct async_signal_handler **); + +/* Call the handler from HANDLER the next time through the event + loop. */ +extern void mark_async_signal_handler (struct async_signal_handler *handler); + +/* Returns true if HANDLER is marked ready. */ + +extern int + async_signal_handler_is_marked (struct async_signal_handler *handler); + +/* Mark HANDLER as NOT ready. */ + +extern void clear_async_signal_handler (struct async_signal_handler *handler); + +/* Create and register an asynchronous event source in the event loop, + and set PROC as its callback. CLIENT_DATA is passed as argument to + PROC upon its invocation. Returns a pointer to an opaque structure + used to mark as ready and to later delete this event source from + the event loop. */ +extern struct async_event_handler * + create_async_event_handler (async_event_handler_func *proc, + gdb_client_data client_data); + +/* Remove the event source pointed by HANDLER_PTR created by + CREATE_ASYNC_EVENT_HANDLER from the event loop, and release it. */ +extern void + delete_async_event_handler (struct async_event_handler **handler_ptr); + +/* Call the handler from HANDLER the next time through the event + loop. */ +extern void mark_async_event_handler (struct async_event_handler *handler); + +/* Mark the handler (ASYNC_HANDLER_PTR) as NOT ready. */ + +extern void clear_async_event_handler (struct async_event_handler *handler); + +extern void initialize_async_signal_handlers (void); + +#endif /* ASYNC_EVENT_H */ |