GDB (xrefs)
|
#include "defs.h"
#include "event-loop.h"
#include "event-top.h"
#include "queue.h"
#include <poll.h>
#include <sys/types.h>
#include <sys/time.h>
#include "gdb_select.h"
#include "observer.h"
Go to the source code of this file.
Classes | |
union | event_data |
struct | gdb_event |
struct | file_handler |
struct | async_signal_handler |
struct | async_event_handler |
struct | gdb_timer |
Macros | |
#define | GDB_READABLE (1<<1) |
#define | GDB_WRITABLE (1<<2) |
#define | GDB_EXCEPTION (1<<3) |
#define | USE_POLL 1 |
Typedefs | |
typedef union event_data | event_data |
typedef struct gdb_event | gdb_event |
typedef void( | event_handler_func) (event_data) |
typedef struct gdb_event * | gdb_event_p |
typedef struct file_handler | file_handler |
typedef struct async_signal_handler | async_signal_handler |
typedef struct async_event_handler | async_event_handler |
Variables | |
static unsigned char | use_poll = USE_POLL |
struct { | |
file_handler * first_file_handler | |
file_handler * next_file_handler | |
struct pollfd * poll_fds | |
int next_poll_fds_index | |
int poll_timeout | |
fd_set check_masks [3] | |
fd_set ready_masks [3] | |
int num_fds | |
struct timeval select_timeout | |
int timeout_valid | |
} | gdb_notifier |
struct { | |
struct gdb_timer * first_timer | |
int num_timers | |
} | timer_list |
struct { | |
async_signal_handler * first_handler | |
async_signal_handler * last_handler | |
} | sighandler_list |
struct { | |
async_event_handler * first_handler | |
async_event_handler * last_handler | |
} | async_event_handler_list |
#define GDB_EXCEPTION (1<<3) |
Definition at line 43 of file event-loop.c.
Referenced by add_file_handler(), create_file_handler(), delete_file_handler(), gdb_wait_for_event(), and handle_file_event().
#define GDB_READABLE (1<<1) |
Definition at line 41 of file event-loop.c.
Referenced by add_file_handler(), create_file_handler(), delete_file_handler(), and gdb_wait_for_event().
#define GDB_WRITABLE (1<<2) |
Definition at line 42 of file event-loop.c.
Referenced by create_file_handler(), delete_file_handler(), and gdb_wait_for_event().
#define USE_POLL 1 |
Definition at line 151 of file event-loop.c.
typedef struct async_event_handler async_event_handler |
typedef struct async_signal_handler async_signal_handler |
typedef union event_data event_data |
typedef void( event_handler_func) (event_data) |
Definition at line 53 of file event-loop.c.
typedef struct file_handler file_handler |
Definition at line 52 of file event-loop.c.
typedef struct gdb_event * gdb_event_p |
void add_file_handler | ( | int | fd, |
handler_func * | proc, | ||
gdb_client_data | client_data | ||
) |
Definition at line 388 of file event-loop.c.
References _, create_file_handler(), GDB_EXCEPTION, GDB_READABLE, internal_error(), and use_poll.
Referenced by gdb_setup_readline(), linux_nat_async(), linux_nat_terminal_ours(), remote_terminal_ours(), reschedule(), and tui_initialize_io().
int async_signal_handler_is_marked | ( | async_signal_handler * | async_handler_ptr | ) |
Definition at line 922 of file event-loop.c.
References async_signal_handler::ready.
Referenced by remote_check_pending_interrupt().
void call_async_signal_handler | ( | struct async_signal_handler * | handler | ) |
Definition at line 896 of file event-loop.c.
References async_signal_handler::client_data, and async_signal_handler::proc.
Referenced by gdb_call_async_signal_handler(), gdb_select(), and remote_check_pending_interrupt().
|
static |
Definition at line 1028 of file event-loop.c.
References async_event_handler_list, async_event_handler::client_data, async_event_handler::next_handler, async_event_handler::proc, and async_event_handler::ready.
Referenced by gdb_do_one_event().
void clear_async_event_handler | ( | async_event_handler * | async_handler_ptr | ) |
Definition at line 1019 of file event-loop.c.
References async_event_handler::ready.
Referenced by record_btrace_async(), record_full_async(), and remote_async().
void clear_async_signal_handler | ( | async_signal_handler * | async_handler_ptr | ) |
Definition at line 914 of file event-loop.c.
References async_signal_handler::ready.
Referenced by remote_check_pending_interrupt().
async_event_handler* create_async_event_handler | ( | async_event_handler_func * | proc, |
gdb_client_data | client_data | ||
) |
Definition at line 988 of file event-loop.c.
References async_event_handler_list, async_event_handler::client_data, async_event_handler::next_handler, async_event_handler::proc, async_event_handler::ready, and xmalloc().
Referenced by record_btrace_open(), record_full_open(), remote_notif_state_allocate(), and remote_open_1().
async_signal_handler* create_async_signal_handler | ( | sig_handler_func * | proc, |
gdb_client_data | client_data | ||
) |
Definition at line 873 of file event-loop.c.
References async_signal_handler::client_data, async_signal_handler::next_handler, async_signal_handler::proc, async_signal_handler::ready, sighandler_list, and xmalloc().
Referenced by _initialize_remote(), async_init_signals(), initialize_remote_fileio(), and tui_initialize_win().
|
static |
Definition at line 440 of file event-loop.c.
References _, file_handler::client_data, file_handler::fd, GDB_EXCEPTION, gdb_notifier, GDB_READABLE, GDB_WRITABLE, internal_error(), file_handler::mask, file_handler::next_file, file_handler::proc, file_handler::ready_mask, use_poll, xmalloc(), and xrealloc().
Referenced by add_file_handler().
int create_timer | ( | int | milliseconds, |
timer_handler_func * | proc, | ||
gdb_client_data | client_data | ||
) |
Definition at line 1080 of file event-loop.c.
References gdb_timer::client_data, gdb_notifier, gdb_timer::next, gdb_timer::proc, gdb_timer::timer_id, timer_list, gdb_timer::when, and xmalloc().
Referenced by reschedule().
void delete_async_event_handler | ( | async_event_handler ** | async_handler_ptr | ) |
Definition at line 1050 of file event-loop.c.
References async_event_handler_list, gdb_assert, async_event_handler::next_handler, and xfree().
Referenced by record_btrace_close(), record_full_close(), remote_close(), and remote_notif_state_xfree().
void delete_async_signal_handler | ( | async_signal_handler ** | async_handler_ptr | ) |
Definition at line 959 of file event-loop.c.
References gdb_assert, async_signal_handler::next_handler, sighandler_list, and xfree().
void delete_file_handler | ( | int | fd | ) |
Definition at line 539 of file event-loop.c.
References _, file_handler::fd, GDB_EXCEPTION, gdb_notifier, GDB_READABLE, GDB_WRITABLE, get_next_file_handler_to_handle_and_advance(), internal_error(), file_handler::mask, file_handler::next_file, use_poll, xfree(), and xmalloc().
Referenced by gdb_disable_readline(), linux_nat_async(), linux_nat_terminal_inferior(), remote_terminal_inferior(), reschedule(), ser_base_async(), and stdin_event_handler().
void delete_timer | ( | int | id | ) |
Definition at line 1146 of file event-loop.c.
References gdb_notifier, gdb_timer::next, gdb_timer::timer_id, timer_list, and xfree().
Referenced by reschedule(), and ser_base_async().
int gdb_do_one_event | ( | void | ) |
Definition at line 271 of file event-loop.c.
References check_async_event_handlers(), gdb_wait_for_event(), internal_error(), invoke_async_signal_handlers(), and poll_timers().
Referenced by gdb_readline_wrapper(), maybe_wait_sync_command_done(), and start_event_loop().
Definition at line 721 of file event-loop.c.
References _, file_handler::fd, gdb_assert, GDB_EXCEPTION, gdb_flush(), gdb_notifier, GDB_READABLE, gdb_select(), gdb_stderr, gdb_stdout, GDB_WRITABLE, get_next_file_handler_to_handle_and_advance(), handle_file_event(), internal_error(), file_handler::next_file, perror_with_name(), select_timeout, timeout, update_wait_timeout(), and use_poll.
Referenced by gdb_do_one_event().
|
static |
Definition at line 516 of file event-loop.c.
References gdb_assert, gdb_notifier, and file_handler::next_file.
Referenced by delete_file_handler(), and gdb_wait_for_event().
|
static |
Definition at line 647 of file event-loop.c.
References _, file_handler::client_data, file_handler::error, file_handler::fd, GDB_EXCEPTION, internal_error(), file_handler::mask, printf_unfiltered(), file_handler::proc, and use_poll.
Referenced by gdb_wait_for_event().
|
static |
Definition at line 930 of file event-loop.c.
References async_signal_handler::client_data, async_signal_handler::next_handler, async_signal_handler::proc, async_signal_handler::ready, and sighandler_list.
Referenced by gdb_do_one_event().
void mark_async_event_handler | ( | async_event_handler * | async_handler_ptr | ) |
Definition at line 1011 of file event-loop.c.
References async_event_handler::ready.
Referenced by handle_notification(), push_stop_reply(), queued_stop_reply(), record_btrace_async(), record_btrace_resume(), record_full_async(), remote_async(), remote_notif_stop_can_get_pending_events(), and remote_wait().
void mark_async_signal_handler | ( | async_signal_handler * | async_handler_ptr | ) |
Definition at line 906 of file event-loop.c.
References async_signal_handler::ready.
Referenced by gdb_call_async_signal_handler(), handle_sigfpe(), and handle_sigterm().
|
static |
Definition at line 1240 of file event-loop.c.
References gdb_timer::client_data, gdb_timer::next, gdb_timer::proc, timer_list, update_wait_timeout(), and xfree().
Referenced by gdb_do_one_event().
void start_event_loop | ( | void | ) |
Definition at line 335 of file event-loop.c.
References after_char_processing_hook, async_enable_stdin(), CATCH, END_CATCH, exception_print(), gdb_do_one_event(), gdb_stderr, observer_notify_command_error(), RETURN_MASK_ALL, and TRY.
Referenced by cli_command_loop(), and mi_command_loop().
|
static |
Definition at line 1181 of file event-loop.c.
References _, gdb_notifier, internal_error(), timer_list, and use_poll.
Referenced by gdb_wait_for_event(), and poll_timers().
struct { ... } async_event_handler_list |
Referenced by check_async_event_handlers(), create_async_event_handler(), and delete_async_event_handler().
fd_set check_masks[3] |
Definition at line 192 of file event-loop.c.
file_handler* first_file_handler |
Definition at line 166 of file event-loop.c.
async_event_handler* first_handler |
Definition at line 237 of file event-loop.c.
struct gdb_timer* first_timer |
Definition at line 225 of file event-loop.c.
struct { ... } gdb_notifier |
async_event_handler* last_handler |
Definition at line 240 of file event-loop.c.
file_handler* next_file_handler |
Definition at line 173 of file event-loop.c.
int next_poll_fds_index |
Definition at line 184 of file event-loop.c.
int num_fds |
Definition at line 199 of file event-loop.c.
Referenced by ioscm_input_waiting().
int num_timers |
Definition at line 228 of file event-loop.c.
struct pollfd* poll_fds |
Definition at line 177 of file event-loop.c.
int poll_timeout |
Definition at line 187 of file event-loop.c.
fd_set ready_masks[3] |
Definition at line 195 of file event-loop.c.
struct timeval select_timeout |
Definition at line 202 of file event-loop.c.
Referenced by gdb_wait_for_event().
struct { ... } sighandler_list |
Referenced by create_async_signal_handler(), delete_async_signal_handler(), and invoke_async_signal_handlers().
int timeout_valid |
Definition at line 205 of file event-loop.c.
struct { ... } timer_list |
Referenced by create_timer(), delete_timer(), poll_timers(), and update_wait_timeout().
|
static |
Definition at line 156 of file event-loop.c.
Referenced by add_file_handler(), create_file_handler(), delete_file_handler(), gdb_wait_for_event(), handle_file_event(), ioscm_input_waiting(), and update_wait_timeout().