136 gdb_client_data client_data,
142 async_handler_ptr->
ready = 0;
152 return async_handler_ptr;
162 if (debug_event_loop != debug_event_loop_kind::OFF)
166 const char head[] = (
"[event-loop] mark_async_signal_handler: marking"
167 "async signal handler `");
168 gdb_stdlog->write_async_safe (head, strlen (head));
171 strlen (async_handler_ptr->
name));
173 const char tail[] =
"`\n";
174 gdb_stdlog->write_async_safe (tail, strlen (tail));
177 async_handler_ptr->
ready = 1;
186 event_loop_debug_printf (
"clearing async signal handler `%s`",
187 async_handler_ptr->
name);
188 async_handler_ptr->
ready = 0;
196 return async_handler_ptr->
ready;
218 async_handler_ptr != NULL;
221 if (async_handler_ptr->
ready)
224 if (async_handler_ptr == NULL)
227 async_handler_ptr->
ready = 0;
231 event_loop_debug_printf (
"invoking async signal handler `%s`",
232 async_handler_ptr->
name);
255 while (prev_ptr && prev_ptr->
next_handler != (*async_handler_ptr))
257 gdb_assert (prev_ptr);
262 xfree ((*async_handler_ptr));
263 (*async_handler_ptr) = NULL;
270 gdb_client_data client_data,
296 event_loop_debug_printf (
"marking async event handler `%s` "
297 "(previous state was %d)",
298 async_handler_ptr->
name,
299 async_handler_ptr->
ready);
300 async_handler_ptr->
ready = 1;
308 event_loop_debug_printf (
"clearing async event handler `%s`",
309 async_handler_ptr->
name);
310 async_handler_ptr->
ready = 0;
318 return handler->
ready;
330 async_handler_ptr != NULL;
333 if (async_handler_ptr->
ready)
335 event_loop_debug_printf (
"invoking async event handler `%s`",
336 async_handler_ptr->
name);
355 = (*async_handler_ptr)->next_handler;
362 while (prev_ptr && prev_ptr->
next_handler != *async_handler_ptr)
364 gdb_assert (prev_ptr);
369 xfree (*async_handler_ptr);
370 *async_handler_ptr = NULL;
int async_signal_handler_is_marked(async_signal_handler *async_handler_ptr)
static struct @14 async_event_handler_list
static struct @13 sighandler_list
void mark_async_event_handler(async_event_handler *async_handler_ptr)
async_event_handler * create_async_event_handler(async_event_handler_func *proc, gdb_client_data client_data, const char *name)
void clear_async_signal_handler(async_signal_handler *async_handler_ptr)
void delete_async_signal_handler(async_signal_handler **async_handler_ptr)
void clear_async_event_handler(async_event_handler *async_handler_ptr)
int invoke_async_signal_handlers(void)
void delete_async_event_handler(async_event_handler **async_handler_ptr)
async_signal_handler * create_async_signal_handler(sig_handler_func *proc, gdb_client_data client_data, const char *name)
async_signal_handler * last_handler
int check_async_event_handlers()
async_signal_handler * first_handler
static struct serial_event * async_signal_handlers_serial_event
static void async_signals_handler(int error, gdb_client_data client_data)
void initialize_async_signal_handlers(void)
void mark_async_signal_handler(async_signal_handler *async_handler_ptr)
bool async_event_handler_marked(async_event_handler *handler)
void() sig_handler_func(gdb_client_data)
void() async_event_handler_func(gdb_client_data)
void serial_event_set(struct serial_event *event)
void serial_event_clear(struct serial_event *event)
struct serial_event * make_serial_event(void)
int serial_event_fd(struct serial_event *event)
async_event_handler_func * proc
gdb_client_data client_data
struct async_event_handler * next_handler
gdb_client_data client_data
struct async_signal_handler * next_handler