Prepare gdb.python/mi-py-events.exp for Python/MI in separate channels
[external/binutils.git] / gdb / event-loop.c
1 /* Event loop machinery for GDB, the GNU debugger.
2    Copyright (C) 1999-2016 Free Software Foundation, Inc.
3    Written by Elena Zannoni <ezannoni@cygnus.com> of Cygnus Solutions.
4
5    This file is part of GDB.
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20 #include "defs.h"
21 #include "event-loop.h"
22 #include "event-top.h"
23 #include "queue.h"
24 #include "ser-event.h"
25
26 #ifdef HAVE_POLL
27 #if defined (HAVE_POLL_H)
28 #include <poll.h>
29 #elif defined (HAVE_SYS_POLL_H)
30 #include <sys/poll.h>
31 #endif
32 #endif
33
34 #include <sys/types.h>
35 #include "gdb_sys_time.h"
36 #include "gdb_select.h"
37 #include "observer.h"
38
39 /* Tell create_file_handler what events we are interested in.
40    This is used by the select version of the event loop.  */
41
42 #define GDB_READABLE    (1<<1)
43 #define GDB_WRITABLE    (1<<2)
44 #define GDB_EXCEPTION   (1<<3)
45
46 /* Data point to pass to the event handler.  */
47 typedef union event_data
48 {
49   void *ptr;
50   int integer;
51 } event_data;
52
53 typedef struct gdb_event gdb_event;
54 typedef void (event_handler_func) (event_data);
55
56 /* Event for the GDB event system.  Events are queued by calling
57    async_queue_event and serviced later on by gdb_do_one_event.  An
58    event can be, for instance, a file descriptor becoming ready to be
59    read.  Servicing an event simply means that the procedure PROC will
60    be called.  We have 2 queues, one for file handlers that we listen
61    to in the event loop, and one for the file handlers+events that are
62    ready.  The procedure PROC associated with each event is dependant
63    of the event source.  In the case of monitored file descriptors, it
64    is always the same (handle_file_event).  Its duty is to invoke the
65    handler associated with the file descriptor whose state change
66    generated the event, plus doing other cleanups and such.  In the
67    case of async signal handlers, it is
68    invoke_async_signal_handler.  */
69
70 typedef struct gdb_event
71   {
72     /* Procedure to call to service this event.  */
73     event_handler_func *proc;
74
75     /* Data to pass to the event handler.  */
76     event_data data;
77   } *gdb_event_p;
78
79 /* Information about each file descriptor we register with the event
80    loop.  */
81
82 typedef struct file_handler
83   {
84     int fd;                     /* File descriptor.  */
85     int mask;                   /* Events we want to monitor: POLLIN, etc.  */
86     int ready_mask;             /* Events that have been seen since
87                                    the last time.  */
88     handler_func *proc;         /* Procedure to call when fd is ready.  */
89     gdb_client_data client_data;        /* Argument to pass to proc.  */
90     int error;                  /* Was an error detected on this fd?  */
91     struct file_handler *next_file;     /* Next registered file descriptor.  */
92   }
93 file_handler;
94
95 /* PROC is a function to be invoked when the READY flag is set.  This
96    happens when there has been a signal and the corresponding signal
97    handler has 'triggered' this async_signal_handler for execution.
98    The actual work to be done in response to a signal will be carried
99    out by PROC at a later time, within process_event.  This provides a
100    deferred execution of signal handlers.
101
102    Async_init_signals takes care of setting up such an
103    async_signal_handler for each interesting signal.  */
104
105 typedef struct async_signal_handler
106   {
107     int ready;                      /* If ready, call this handler
108                                        from the main event loop, using
109                                        invoke_async_handler.  */
110     struct async_signal_handler *next_handler;  /* Ptr to next handler.  */
111     sig_handler_func *proc;         /* Function to call to do the work.  */
112     gdb_client_data client_data;    /* Argument to async_handler_func.  */
113   }
114 async_signal_handler;
115
116 /* PROC is a function to be invoked when the READY flag is set.  This
117    happens when the event has been marked with
118    MARK_ASYNC_EVENT_HANDLER.  The actual work to be done in response
119    to an event will be carried out by PROC at a later time, within
120    process_event.  This provides a deferred execution of event
121    handlers.  */
122 typedef struct async_event_handler
123   {
124     /* If ready, call this handler from the main event loop, using
125        invoke_event_handler.  */
126     int ready;
127
128     /* Point to next handler.  */
129     struct async_event_handler *next_handler;
130
131     /* Function to call to do the work.  */
132     async_event_handler_func *proc;
133
134     /* Argument to PROC.  */
135     gdb_client_data client_data;
136   }
137 async_event_handler;
138
139 /* Gdb_notifier is just a list of file descriptors gdb is interested in.
140    These are the input file descriptor, and the target file
141    descriptor.  We have two flavors of the notifier, one for platforms
142    that have the POLL function, the other for those that don't, and
143    only support SELECT.  Each of the elements in the gdb_notifier list is
144    basically a description of what kind of events gdb is interested
145    in, for each fd.  */
146
147 /* As of 1999-04-30 only the input file descriptor is registered with the
148    event loop.  */
149
150 /* Do we use poll or select ? */
151 #ifdef HAVE_POLL
152 #define USE_POLL 1
153 #else
154 #define USE_POLL 0
155 #endif /* HAVE_POLL */
156
157 static unsigned char use_poll = USE_POLL;
158
159 #ifdef USE_WIN32API
160 #include <windows.h>
161 #include <io.h>
162 #endif
163
164 static struct
165   {
166     /* Ptr to head of file handler list.  */
167     file_handler *first_file_handler;
168
169     /* Next file handler to handle, for the select variant.  To level
170        the fairness across event sources, we serve file handlers in a
171        round-robin-like fashion.  The number and order of the polled
172        file handlers may change between invocations, but this is good
173        enough.  */
174     file_handler *next_file_handler;
175
176 #ifdef HAVE_POLL
177     /* Ptr to array of pollfd structures.  */
178     struct pollfd *poll_fds;
179
180     /* Next file descriptor to handle, for the poll variant.  To level
181        the fairness across event sources, we poll the file descriptors
182        in a round-robin-like fashion.  The number and order of the
183        polled file descriptors may change between invocations, but
184        this is good enough.  */
185     int next_poll_fds_index;
186
187     /* Timeout in milliseconds for calls to poll().  */
188     int poll_timeout;
189 #endif
190
191     /* Masks to be used in the next call to select.
192        Bits are set in response to calls to create_file_handler.  */
193     fd_set check_masks[3];
194
195     /* What file descriptors were found ready by select.  */
196     fd_set ready_masks[3];
197
198     /* Number of file descriptors to monitor (for poll).  */
199     /* Number of valid bits (highest fd value + 1) (for select).  */
200     int num_fds;
201
202     /* Time structure for calls to select().  */
203     struct timeval select_timeout;
204
205     /* Flag to tell whether the timeout should be used.  */
206     int timeout_valid;
207   }
208 gdb_notifier;
209
210 /* Structure associated with a timer.  PROC will be executed at the
211    first occasion after WHEN.  */
212 struct gdb_timer
213   {
214     struct timeval when;
215     int timer_id;
216     struct gdb_timer *next;
217     timer_handler_func *proc;       /* Function to call to do the work.  */
218     gdb_client_data client_data;    /* Argument to async_handler_func.  */
219   };
220
221 /* List of currently active timers.  It is sorted in order of
222    increasing timers.  */
223 static struct
224   {
225     /* Pointer to first in timer list.  */
226     struct gdb_timer *first_timer;
227
228     /* Id of the last timer created.  */
229     int num_timers;
230   }
231 timer_list;
232
233 /* All the async_signal_handlers gdb is interested in are kept onto
234    this list.  */
235 static struct
236   {
237     /* Pointer to first in handler list.  */
238     async_signal_handler *first_handler;
239
240     /* Pointer to last in handler list.  */
241     async_signal_handler *last_handler;
242   }
243 sighandler_list;
244
245 /* All the async_event_handlers gdb is interested in are kept onto
246    this list.  */
247 static struct
248   {
249     /* Pointer to first in handler list.  */
250     async_event_handler *first_handler;
251
252     /* Pointer to last in handler list.  */
253     async_event_handler *last_handler;
254   }
255 async_event_handler_list;
256
257 static int invoke_async_signal_handlers (void);
258 static void create_file_handler (int fd, int mask, handler_func *proc,
259                                  gdb_client_data client_data);
260 static int check_async_event_handlers (void);
261 static int gdb_wait_for_event (int);
262 static int update_wait_timeout (void);
263 static int poll_timers (void);
264 \f
265
266 /* This event is signalled whenever an asynchronous handler needs to
267    defer an action to the event loop.  */
268 static struct serial_event *async_signal_handlers_serial_event;
269
270 /* Callback registered with ASYNC_SIGNAL_HANDLERS_SERIAL_EVENT.  */
271
272 static void
273 async_signals_handler (int error, gdb_client_data client_data)
274 {
275   /* Do nothing.  Handlers are run by invoke_async_signal_handlers
276      from instead.  */
277 }
278
279 void
280 initialize_async_signal_handlers (void)
281 {
282   async_signal_handlers_serial_event = make_serial_event ();
283
284   add_file_handler (serial_event_fd (async_signal_handlers_serial_event),
285                     async_signals_handler, NULL);
286 }
287
288 /* Process one high level event.  If nothing is ready at this time,
289    wait for something to happen (via gdb_wait_for_event), then process
290    it.  Returns >0 if something was done otherwise returns <0 (this
291    can happen if there are no event sources to wait for).  */
292
293 int
294 gdb_do_one_event (void)
295 {
296   static int event_source_head = 0;
297   const int number_of_sources = 3;
298   int current = 0;
299
300   /* First let's see if there are any asynchronous signal handlers
301      that are ready.  These would be the result of invoking any of the
302      signal handlers.  */
303   if (invoke_async_signal_handlers ())
304     return 1;
305
306   /* To level the fairness across event sources, we poll them in a
307      round-robin fashion.  */
308   for (current = 0; current < number_of_sources; current++)
309     {
310       int res;
311
312       switch (event_source_head)
313         {
314         case 0:
315           /* Are any timers that are ready?  */
316           res = poll_timers ();
317           break;
318         case 1:
319           /* Are there events already waiting to be collected on the
320              monitored file descriptors?  */
321           res = gdb_wait_for_event (0);
322           break;
323         case 2:
324           /* Are there any asynchronous event handlers ready?  */
325           res = check_async_event_handlers ();
326           break;
327         default:
328           internal_error (__FILE__, __LINE__,
329                           "unexpected event_source_head %d",
330                           event_source_head);
331         }
332
333       event_source_head++;
334       if (event_source_head == number_of_sources)
335         event_source_head = 0;
336
337       if (res > 0)
338         return 1;
339     }
340
341   /* Block waiting for a new event.  If gdb_wait_for_event returns -1,
342      we should get out because this means that there are no event
343      sources left.  This will make the event loop stop, and the
344      application exit.  */
345
346   if (gdb_wait_for_event (1) < 0)
347     return -1;
348
349   /* If gdb_wait_for_event has returned 1, it means that one event has
350      been handled.  We break out of the loop.  */
351   return 1;
352 }
353
354 /* Start up the event loop.  This is the entry point to the event loop
355    from the command loop.  */
356
357 void
358 start_event_loop (void)
359 {
360   /* Loop until there is nothing to do.  This is the entry point to
361      the event loop engine.  gdb_do_one_event will process one event
362      for each invocation.  It blocks waiting for an event and then
363      processes it.  */
364   while (1)
365     {
366       int result = 0;
367
368       TRY
369         {
370           result = gdb_do_one_event ();
371         }
372       CATCH (ex, RETURN_MASK_ALL)
373         {
374           exception_print (gdb_stderr, ex);
375
376           /* If any exception escaped to here, we better enable
377              stdin.  Otherwise, any command that calls async_disable_stdin,
378              and then throws, will leave stdin inoperable.  */
379           async_enable_stdin ();
380           /* If we long-jumped out of do_one_event, we probably didn't
381              get around to resetting the prompt, which leaves readline
382              in a messed-up state.  Reset it here.  */
383           observer_notify_command_error ();
384           /* This call looks bizarre, but it is required.  If the user
385              entered a command that caused an error,
386              after_char_processing_hook won't be called from
387              rl_callback_read_char_wrapper.  Using a cleanup there
388              won't work, since we want this function to be called
389              after a new prompt is printed.  */
390           if (after_char_processing_hook)
391             (*after_char_processing_hook) ();
392           /* Maybe better to set a flag to be checked somewhere as to
393              whether display the prompt or not.  */
394         }
395       END_CATCH
396
397       if (result < 0)
398         break;
399     }
400
401   /* We are done with the event loop.  There are no more event sources
402      to listen to.  So we exit GDB.  */
403   return;
404 }
405 \f
406
407 /* Wrapper function for create_file_handler, so that the caller
408    doesn't have to know implementation details about the use of poll
409    vs. select.  */
410 void
411 add_file_handler (int fd, handler_func * proc, gdb_client_data client_data)
412 {
413 #ifdef HAVE_POLL
414   struct pollfd fds;
415 #endif
416
417   if (use_poll)
418     {
419 #ifdef HAVE_POLL
420       /* Check to see if poll () is usable.  If not, we'll switch to
421          use select.  This can happen on systems like
422          m68k-motorola-sys, `poll' cannot be used to wait for `stdin'.
423          On m68k-motorola-sysv, tty's are not stream-based and not
424          `poll'able.  */
425       fds.fd = fd;
426       fds.events = POLLIN;
427       if (poll (&fds, 1, 0) == 1 && (fds.revents & POLLNVAL))
428         use_poll = 0;
429 #else
430       internal_error (__FILE__, __LINE__,
431                       _("use_poll without HAVE_POLL"));
432 #endif /* HAVE_POLL */
433     }
434   if (use_poll)
435     {
436 #ifdef HAVE_POLL
437       create_file_handler (fd, POLLIN, proc, client_data);
438 #else
439       internal_error (__FILE__, __LINE__,
440                       _("use_poll without HAVE_POLL"));
441 #endif
442     }
443   else
444     create_file_handler (fd, GDB_READABLE | GDB_EXCEPTION, 
445                          proc, client_data);
446 }
447
448 /* Add a file handler/descriptor to the list of descriptors we are
449    interested in.
450
451    FD is the file descriptor for the file/stream to be listened to.
452
453    For the poll case, MASK is a combination (OR) of POLLIN,
454    POLLRDNORM, POLLRDBAND, POLLPRI, POLLOUT, POLLWRNORM, POLLWRBAND:
455    these are the events we are interested in.  If any of them occurs,
456    proc should be called.
457
458    For the select case, MASK is a combination of READABLE, WRITABLE,
459    EXCEPTION.  PROC is the procedure that will be called when an event
460    occurs for FD.  CLIENT_DATA is the argument to pass to PROC.  */
461
462 static void
463 create_file_handler (int fd, int mask, handler_func * proc, 
464                      gdb_client_data client_data)
465 {
466   file_handler *file_ptr;
467
468   /* Do we already have a file handler for this file?  (We may be
469      changing its associated procedure).  */
470   for (file_ptr = gdb_notifier.first_file_handler; file_ptr != NULL;
471        file_ptr = file_ptr->next_file)
472     {
473       if (file_ptr->fd == fd)
474         break;
475     }
476
477   /* It is a new file descriptor.  Add it to the list.  Otherwise, just
478      change the data associated with it.  */
479   if (file_ptr == NULL)
480     {
481       file_ptr = XNEW (file_handler);
482       file_ptr->fd = fd;
483       file_ptr->ready_mask = 0;
484       file_ptr->next_file = gdb_notifier.first_file_handler;
485       gdb_notifier.first_file_handler = file_ptr;
486
487       if (use_poll)
488         {
489 #ifdef HAVE_POLL
490           gdb_notifier.num_fds++;
491           if (gdb_notifier.poll_fds)
492             gdb_notifier.poll_fds =
493               (struct pollfd *) xrealloc (gdb_notifier.poll_fds,
494                                           (gdb_notifier.num_fds
495                                            * sizeof (struct pollfd)));
496           else
497             gdb_notifier.poll_fds =
498               XNEW (struct pollfd);
499           (gdb_notifier.poll_fds + gdb_notifier.num_fds - 1)->fd = fd;
500           (gdb_notifier.poll_fds + gdb_notifier.num_fds - 1)->events = mask;
501           (gdb_notifier.poll_fds + gdb_notifier.num_fds - 1)->revents = 0;
502 #else
503           internal_error (__FILE__, __LINE__,
504                           _("use_poll without HAVE_POLL"));
505 #endif /* HAVE_POLL */
506         }
507       else
508         {
509           if (mask & GDB_READABLE)
510             FD_SET (fd, &gdb_notifier.check_masks[0]);
511           else
512             FD_CLR (fd, &gdb_notifier.check_masks[0]);
513
514           if (mask & GDB_WRITABLE)
515             FD_SET (fd, &gdb_notifier.check_masks[1]);
516           else
517             FD_CLR (fd, &gdb_notifier.check_masks[1]);
518
519           if (mask & GDB_EXCEPTION)
520             FD_SET (fd, &gdb_notifier.check_masks[2]);
521           else
522             FD_CLR (fd, &gdb_notifier.check_masks[2]);
523
524           if (gdb_notifier.num_fds <= fd)
525             gdb_notifier.num_fds = fd + 1;
526         }
527     }
528
529   file_ptr->proc = proc;
530   file_ptr->client_data = client_data;
531   file_ptr->mask = mask;
532 }
533
534 /* Return the next file handler to handle, and advance to the next
535    file handler, wrapping around if the end of the list is
536    reached.  */
537
538 static file_handler *
539 get_next_file_handler_to_handle_and_advance (void)
540 {
541   file_handler *curr_next;
542
543   /* The first time around, this is still NULL.  */
544   if (gdb_notifier.next_file_handler == NULL)
545     gdb_notifier.next_file_handler = gdb_notifier.first_file_handler;
546
547   curr_next = gdb_notifier.next_file_handler;
548   gdb_assert (curr_next != NULL);
549
550   /* Advance.  */
551   gdb_notifier.next_file_handler = curr_next->next_file;
552   /* Wrap around, if necessary.  */
553   if (gdb_notifier.next_file_handler == NULL)
554     gdb_notifier.next_file_handler = gdb_notifier.first_file_handler;
555
556   return curr_next;
557 }
558
559 /* Remove the file descriptor FD from the list of monitored fd's: 
560    i.e. we don't care anymore about events on the FD.  */
561 void
562 delete_file_handler (int fd)
563 {
564   file_handler *file_ptr, *prev_ptr = NULL;
565   int i;
566 #ifdef HAVE_POLL
567   int j;
568   struct pollfd *new_poll_fds;
569 #endif
570
571   /* Find the entry for the given file.  */
572
573   for (file_ptr = gdb_notifier.first_file_handler; file_ptr != NULL;
574        file_ptr = file_ptr->next_file)
575     {
576       if (file_ptr->fd == fd)
577         break;
578     }
579
580   if (file_ptr == NULL)
581     return;
582
583   if (use_poll)
584     {
585 #ifdef HAVE_POLL
586       /* Create a new poll_fds array by copying every fd's information
587          but the one we want to get rid of.  */
588
589       new_poll_fds = (struct pollfd *) 
590         xmalloc ((gdb_notifier.num_fds - 1) * sizeof (struct pollfd));
591
592       for (i = 0, j = 0; i < gdb_notifier.num_fds; i++)
593         {
594           if ((gdb_notifier.poll_fds + i)->fd != fd)
595             {
596               (new_poll_fds + j)->fd = (gdb_notifier.poll_fds + i)->fd;
597               (new_poll_fds + j)->events = (gdb_notifier.poll_fds + i)->events;
598               (new_poll_fds + j)->revents
599                 = (gdb_notifier.poll_fds + i)->revents;
600               j++;
601             }
602         }
603       xfree (gdb_notifier.poll_fds);
604       gdb_notifier.poll_fds = new_poll_fds;
605       gdb_notifier.num_fds--;
606 #else
607       internal_error (__FILE__, __LINE__,
608                       _("use_poll without HAVE_POLL"));
609 #endif /* HAVE_POLL */
610     }
611   else
612     {
613       if (file_ptr->mask & GDB_READABLE)
614         FD_CLR (fd, &gdb_notifier.check_masks[0]);
615       if (file_ptr->mask & GDB_WRITABLE)
616         FD_CLR (fd, &gdb_notifier.check_masks[1]);
617       if (file_ptr->mask & GDB_EXCEPTION)
618         FD_CLR (fd, &gdb_notifier.check_masks[2]);
619
620       /* Find current max fd.  */
621
622       if ((fd + 1) == gdb_notifier.num_fds)
623         {
624           gdb_notifier.num_fds--;
625           for (i = gdb_notifier.num_fds; i; i--)
626             {
627               if (FD_ISSET (i - 1, &gdb_notifier.check_masks[0])
628                   || FD_ISSET (i - 1, &gdb_notifier.check_masks[1])
629                   || FD_ISSET (i - 1, &gdb_notifier.check_masks[2]))
630                 break;
631             }
632           gdb_notifier.num_fds = i;
633         }
634     }
635
636   /* Deactivate the file descriptor, by clearing its mask, 
637      so that it will not fire again.  */
638
639   file_ptr->mask = 0;
640
641   /* If this file handler was going to be the next one to be handled,
642      advance to the next's next, if any.  */
643   if (gdb_notifier.next_file_handler == file_ptr)
644     {
645       if (file_ptr->next_file == NULL
646           && file_ptr == gdb_notifier.first_file_handler)
647         gdb_notifier.next_file_handler = NULL;
648       else
649         get_next_file_handler_to_handle_and_advance ();
650     }
651
652   /* Get rid of the file handler in the file handler list.  */
653   if (file_ptr == gdb_notifier.first_file_handler)
654     gdb_notifier.first_file_handler = file_ptr->next_file;
655   else
656     {
657       for (prev_ptr = gdb_notifier.first_file_handler;
658            prev_ptr->next_file != file_ptr;
659            prev_ptr = prev_ptr->next_file)
660         ;
661       prev_ptr->next_file = file_ptr->next_file;
662     }
663   xfree (file_ptr);
664 }
665
666 /* Handle the given event by calling the procedure associated to the
667    corresponding file handler.  */
668
669 static void
670 handle_file_event (file_handler *file_ptr, int ready_mask)
671 {
672   int mask;
673 #ifdef HAVE_POLL
674   int error_mask;
675 #endif
676
677     {
678         {
679           /* With poll, the ready_mask could have any of three events
680              set to 1: POLLHUP, POLLERR, POLLNVAL.  These events
681              cannot be used in the requested event mask (events), but
682              they can be returned in the return mask (revents).  We
683              need to check for those event too, and add them to the
684              mask which will be passed to the handler.  */
685
686           /* See if the desired events (mask) match the received
687              events (ready_mask).  */
688
689           if (use_poll)
690             {
691 #ifdef HAVE_POLL
692               /* POLLHUP means EOF, but can be combined with POLLIN to
693                  signal more data to read.  */
694               error_mask = POLLHUP | POLLERR | POLLNVAL;
695               mask = ready_mask & (file_ptr->mask | error_mask);
696
697               if ((mask & (POLLERR | POLLNVAL)) != 0)
698                 {
699                   /* Work in progress.  We may need to tell somebody
700                      what kind of error we had.  */
701                   if (mask & POLLERR)
702                     printf_unfiltered (_("Error detected on fd %d\n"),
703                                        file_ptr->fd);
704                   if (mask & POLLNVAL)
705                     printf_unfiltered (_("Invalid or non-`poll'able fd %d\n"),
706                                        file_ptr->fd);
707                   file_ptr->error = 1;
708                 }
709               else
710                 file_ptr->error = 0;
711 #else
712               internal_error (__FILE__, __LINE__,
713                               _("use_poll without HAVE_POLL"));
714 #endif /* HAVE_POLL */
715             }
716           else
717             {
718               if (ready_mask & GDB_EXCEPTION)
719                 {
720                   printf_unfiltered (_("Exception condition detected "
721                                        "on fd %d\n"), file_ptr->fd);
722                   file_ptr->error = 1;
723                 }
724               else
725                 file_ptr->error = 0;
726               mask = ready_mask & file_ptr->mask;
727             }
728
729           /* If there was a match, then call the handler.  */
730           if (mask != 0)
731             (*file_ptr->proc) (file_ptr->error, file_ptr->client_data);
732         }
733     }
734 }
735
736 /* Wait for new events on the monitored file descriptors.  Run the
737    event handler if the first descriptor that is detected by the poll.
738    If BLOCK and if there are no events, this function will block in
739    the call to poll.  Return 1 if an event was handled.  Return -1 if
740    there are no file descriptors to monitor.  Return 1 if an event was
741    handled, otherwise returns 0.  */
742
743 static int
744 gdb_wait_for_event (int block)
745 {
746   file_handler *file_ptr;
747   int num_found = 0;
748
749   /* Make sure all output is done before getting another event.  */
750   gdb_flush (gdb_stdout);
751   gdb_flush (gdb_stderr);
752
753   if (gdb_notifier.num_fds == 0)
754     return -1;
755
756   if (block)
757     update_wait_timeout ();
758
759   if (use_poll)
760     {
761 #ifdef HAVE_POLL
762       int timeout;
763
764       if (block)
765         timeout = gdb_notifier.timeout_valid ? gdb_notifier.poll_timeout : -1;
766       else
767         timeout = 0;
768
769       num_found = poll (gdb_notifier.poll_fds,
770                         (unsigned long) gdb_notifier.num_fds, timeout);
771
772       /* Don't print anything if we get out of poll because of a
773          signal.  */
774       if (num_found == -1 && errno != EINTR)
775         perror_with_name (("poll"));
776 #else
777       internal_error (__FILE__, __LINE__,
778                       _("use_poll without HAVE_POLL"));
779 #endif /* HAVE_POLL */
780     }
781   else
782     {
783       struct timeval select_timeout;
784       struct timeval *timeout_p;
785
786       if (block)
787         timeout_p = gdb_notifier.timeout_valid
788           ? &gdb_notifier.select_timeout : NULL;
789       else
790         {
791           memset (&select_timeout, 0, sizeof (select_timeout));
792           timeout_p = &select_timeout;
793         }
794
795       gdb_notifier.ready_masks[0] = gdb_notifier.check_masks[0];
796       gdb_notifier.ready_masks[1] = gdb_notifier.check_masks[1];
797       gdb_notifier.ready_masks[2] = gdb_notifier.check_masks[2];
798       num_found = gdb_select (gdb_notifier.num_fds,
799                               &gdb_notifier.ready_masks[0],
800                               &gdb_notifier.ready_masks[1],
801                               &gdb_notifier.ready_masks[2],
802                               timeout_p);
803
804       /* Clear the masks after an error from select.  */
805       if (num_found == -1)
806         {
807           FD_ZERO (&gdb_notifier.ready_masks[0]);
808           FD_ZERO (&gdb_notifier.ready_masks[1]);
809           FD_ZERO (&gdb_notifier.ready_masks[2]);
810
811           /* Dont print anything if we got a signal, let gdb handle
812              it.  */
813           if (errno != EINTR)
814             perror_with_name (("select"));
815         }
816     }
817
818   /* Avoid looking at poll_fds[i]->revents if no event fired.  */
819   if (num_found <= 0)
820     return 0;
821
822   /* Run event handlers.  We always run just one handler and go back
823      to polling, in case a handler changes the notifier list.  Since
824      events for sources we haven't consumed yet wake poll/select
825      immediately, no event is lost.  */
826
827   /* To level the fairness across event descriptors, we handle them in
828      a round-robin-like fashion.  The number and order of descriptors
829      may change between invocations, but this is good enough.  */
830   if (use_poll)
831     {
832 #ifdef HAVE_POLL
833       int i;
834       int mask;
835
836       while (1)
837         {
838           if (gdb_notifier.next_poll_fds_index >= gdb_notifier.num_fds)
839             gdb_notifier.next_poll_fds_index = 0;
840           i = gdb_notifier.next_poll_fds_index++;
841
842           gdb_assert (i < gdb_notifier.num_fds);
843           if ((gdb_notifier.poll_fds + i)->revents)
844             break;
845         }
846
847       for (file_ptr = gdb_notifier.first_file_handler;
848            file_ptr != NULL;
849            file_ptr = file_ptr->next_file)
850         {
851           if (file_ptr->fd == (gdb_notifier.poll_fds + i)->fd)
852             break;
853         }
854       gdb_assert (file_ptr != NULL);
855
856       mask = (gdb_notifier.poll_fds + i)->revents;
857       handle_file_event (file_ptr, mask);
858       return 1;
859 #else
860       internal_error (__FILE__, __LINE__,
861                       _("use_poll without HAVE_POLL"));
862 #endif /* HAVE_POLL */
863     }
864   else
865     {
866       /* See comment about even source fairness above.  */
867       int mask = 0;
868
869       do
870         {
871           file_ptr = get_next_file_handler_to_handle_and_advance ();
872
873           if (FD_ISSET (file_ptr->fd, &gdb_notifier.ready_masks[0]))
874             mask |= GDB_READABLE;
875           if (FD_ISSET (file_ptr->fd, &gdb_notifier.ready_masks[1]))
876             mask |= GDB_WRITABLE;
877           if (FD_ISSET (file_ptr->fd, &gdb_notifier.ready_masks[2]))
878             mask |= GDB_EXCEPTION;
879         }
880       while (mask == 0);
881
882       handle_file_event (file_ptr, mask);
883       return 1;
884     }
885   return 0;
886 }
887 \f
888
889 /* Create an asynchronous handler, allocating memory for it.
890    Return a pointer to the newly created handler.
891    This pointer will be used to invoke the handler by 
892    invoke_async_signal_handler.
893    PROC is the function to call with CLIENT_DATA argument 
894    whenever the handler is invoked.  */
895 async_signal_handler *
896 create_async_signal_handler (sig_handler_func * proc,
897                              gdb_client_data client_data)
898 {
899   async_signal_handler *async_handler_ptr;
900
901   async_handler_ptr = XNEW (async_signal_handler);
902   async_handler_ptr->ready = 0;
903   async_handler_ptr->next_handler = NULL;
904   async_handler_ptr->proc = proc;
905   async_handler_ptr->client_data = client_data;
906   if (sighandler_list.first_handler == NULL)
907     sighandler_list.first_handler = async_handler_ptr;
908   else
909     sighandler_list.last_handler->next_handler = async_handler_ptr;
910   sighandler_list.last_handler = async_handler_ptr;
911   return async_handler_ptr;
912 }
913
914 /* Mark the handler (ASYNC_HANDLER_PTR) as ready.  This information
915    will be used when the handlers are invoked, after we have waited
916    for some event.  The caller of this function is the interrupt
917    handler associated with a signal.  */
918 void
919 mark_async_signal_handler (async_signal_handler * async_handler_ptr)
920 {
921   async_handler_ptr->ready = 1;
922   serial_event_set (async_signal_handlers_serial_event);
923 }
924
925 /* See event-loop.h.  */
926
927 void
928 clear_async_signal_handler (async_signal_handler *async_handler_ptr)
929 {
930   async_handler_ptr->ready = 0;
931 }
932
933 /* See event-loop.h.  */
934
935 int
936 async_signal_handler_is_marked (async_signal_handler *async_handler_ptr)
937 {
938   return async_handler_ptr->ready;
939 }
940
941 /* Call all the handlers that are ready.  Returns true if any was
942    indeed ready.  */
943
944 static int
945 invoke_async_signal_handlers (void)
946 {
947   async_signal_handler *async_handler_ptr;
948   int any_ready = 0;
949
950   /* We're going to handle all pending signals, so no need to wake up
951      the event loop again the next time around.  Note this must be
952      cleared _before_ calling the callbacks, to avoid races.  */
953   serial_event_clear (async_signal_handlers_serial_event);
954
955   /* Invoke all ready handlers.  */
956
957   while (1)
958     {
959       for (async_handler_ptr = sighandler_list.first_handler;
960            async_handler_ptr != NULL;
961            async_handler_ptr = async_handler_ptr->next_handler)
962         {
963           if (async_handler_ptr->ready)
964             break;
965         }
966       if (async_handler_ptr == NULL)
967         break;
968       any_ready = 1;
969       async_handler_ptr->ready = 0;
970       (*async_handler_ptr->proc) (async_handler_ptr->client_data);
971     }
972
973   return any_ready;
974 }
975
976 /* Delete an asynchronous handler (ASYNC_HANDLER_PTR).
977    Free the space allocated for it.  */
978 void
979 delete_async_signal_handler (async_signal_handler ** async_handler_ptr)
980 {
981   async_signal_handler *prev_ptr;
982
983   if (sighandler_list.first_handler == (*async_handler_ptr))
984     {
985       sighandler_list.first_handler = (*async_handler_ptr)->next_handler;
986       if (sighandler_list.first_handler == NULL)
987         sighandler_list.last_handler = NULL;
988     }
989   else
990     {
991       prev_ptr = sighandler_list.first_handler;
992       while (prev_ptr && prev_ptr->next_handler != (*async_handler_ptr))
993         prev_ptr = prev_ptr->next_handler;
994       gdb_assert (prev_ptr);
995       prev_ptr->next_handler = (*async_handler_ptr)->next_handler;
996       if (sighandler_list.last_handler == (*async_handler_ptr))
997         sighandler_list.last_handler = prev_ptr;
998     }
999   xfree ((*async_handler_ptr));
1000   (*async_handler_ptr) = NULL;
1001 }
1002
1003 /* Create an asynchronous event handler, allocating memory for it.
1004    Return a pointer to the newly created handler.  PROC is the
1005    function to call with CLIENT_DATA argument whenever the handler is
1006    invoked.  */
1007 async_event_handler *
1008 create_async_event_handler (async_event_handler_func *proc,
1009                             gdb_client_data client_data)
1010 {
1011   async_event_handler *h;
1012
1013   h = XNEW (struct async_event_handler);
1014   h->ready = 0;
1015   h->next_handler = NULL;
1016   h->proc = proc;
1017   h->client_data = client_data;
1018   if (async_event_handler_list.first_handler == NULL)
1019     async_event_handler_list.first_handler = h;
1020   else
1021     async_event_handler_list.last_handler->next_handler = h;
1022   async_event_handler_list.last_handler = h;
1023   return h;
1024 }
1025
1026 /* Mark the handler (ASYNC_HANDLER_PTR) as ready.  This information
1027    will be used by gdb_do_one_event.  The caller will be whoever
1028    created the event source, and wants to signal that the event is
1029    ready to be handled.  */
1030 void
1031 mark_async_event_handler (async_event_handler *async_handler_ptr)
1032 {
1033   async_handler_ptr->ready = 1;
1034 }
1035
1036 /* See event-loop.h.  */
1037
1038 void
1039 clear_async_event_handler (async_event_handler *async_handler_ptr)
1040 {
1041   async_handler_ptr->ready = 0;
1042 }
1043
1044 /* Check if asynchronous event handlers are ready, and call the
1045    handler function for one that is.  */
1046
1047 static int
1048 check_async_event_handlers (void)
1049 {
1050   async_event_handler *async_handler_ptr;
1051
1052   for (async_handler_ptr = async_event_handler_list.first_handler;
1053        async_handler_ptr != NULL;
1054        async_handler_ptr = async_handler_ptr->next_handler)
1055     {
1056       if (async_handler_ptr->ready)
1057         {
1058           async_handler_ptr->ready = 0;
1059           (*async_handler_ptr->proc) (async_handler_ptr->client_data);
1060           return 1;
1061         }
1062     }
1063
1064   return 0;
1065 }
1066
1067 /* Delete an asynchronous handler (ASYNC_HANDLER_PTR).
1068    Free the space allocated for it.  */
1069 void
1070 delete_async_event_handler (async_event_handler **async_handler_ptr)
1071 {
1072   async_event_handler *prev_ptr;
1073
1074   if (async_event_handler_list.first_handler == *async_handler_ptr)
1075     {
1076       async_event_handler_list.first_handler
1077         = (*async_handler_ptr)->next_handler;
1078       if (async_event_handler_list.first_handler == NULL)
1079         async_event_handler_list.last_handler = NULL;
1080     }
1081   else
1082     {
1083       prev_ptr = async_event_handler_list.first_handler;
1084       while (prev_ptr && prev_ptr->next_handler != *async_handler_ptr)
1085         prev_ptr = prev_ptr->next_handler;
1086       gdb_assert (prev_ptr);
1087       prev_ptr->next_handler = (*async_handler_ptr)->next_handler;
1088       if (async_event_handler_list.last_handler == (*async_handler_ptr))
1089         async_event_handler_list.last_handler = prev_ptr;
1090     }
1091   xfree (*async_handler_ptr);
1092   *async_handler_ptr = NULL;
1093 }
1094
1095 /* Create a timer that will expire in MILLISECONDS from now.  When the
1096    timer is ready, PROC will be executed.  At creation, the timer is
1097    aded to the timers queue.  This queue is kept sorted in order of
1098    increasing timers.  Return a handle to the timer struct.  */
1099 int
1100 create_timer (int milliseconds, timer_handler_func * proc, 
1101               gdb_client_data client_data)
1102 {
1103   struct gdb_timer *timer_ptr, *timer_index, *prev_timer;
1104   struct timeval time_now, delta;
1105
1106   /* Compute seconds.  */
1107   delta.tv_sec = milliseconds / 1000;
1108   /* Compute microseconds.  */
1109   delta.tv_usec = (milliseconds % 1000) * 1000;
1110
1111   gettimeofday (&time_now, NULL);
1112
1113   timer_ptr = XNEW (struct gdb_timer);
1114   timer_ptr->when.tv_sec = time_now.tv_sec + delta.tv_sec;
1115   timer_ptr->when.tv_usec = time_now.tv_usec + delta.tv_usec;
1116   /* Carry?  */
1117   if (timer_ptr->when.tv_usec >= 1000000)
1118     {
1119       timer_ptr->when.tv_sec += 1;
1120       timer_ptr->when.tv_usec -= 1000000;
1121     }
1122   timer_ptr->proc = proc;
1123   timer_ptr->client_data = client_data;
1124   timer_list.num_timers++;
1125   timer_ptr->timer_id = timer_list.num_timers;
1126
1127   /* Now add the timer to the timer queue, making sure it is sorted in
1128      increasing order of expiration.  */
1129
1130   for (timer_index = timer_list.first_timer;
1131        timer_index != NULL;
1132        timer_index = timer_index->next)
1133     {
1134       /* If the seconds field is greater or if it is the same, but the
1135          microsecond field is greater.  */
1136       if ((timer_index->when.tv_sec > timer_ptr->when.tv_sec)
1137           || ((timer_index->when.tv_sec == timer_ptr->when.tv_sec)
1138               && (timer_index->when.tv_usec > timer_ptr->when.tv_usec)))
1139         break;
1140     }
1141
1142   if (timer_index == timer_list.first_timer)
1143     {
1144       timer_ptr->next = timer_list.first_timer;
1145       timer_list.first_timer = timer_ptr;
1146
1147     }
1148   else
1149     {
1150       for (prev_timer = timer_list.first_timer;
1151            prev_timer->next != timer_index;
1152            prev_timer = prev_timer->next)
1153         ;
1154
1155       prev_timer->next = timer_ptr;
1156       timer_ptr->next = timer_index;
1157     }
1158
1159   gdb_notifier.timeout_valid = 0;
1160   return timer_ptr->timer_id;
1161 }
1162
1163 /* There is a chance that the creator of the timer wants to get rid of
1164    it before it expires.  */
1165 void
1166 delete_timer (int id)
1167 {
1168   struct gdb_timer *timer_ptr, *prev_timer = NULL;
1169
1170   /* Find the entry for the given timer.  */
1171
1172   for (timer_ptr = timer_list.first_timer; timer_ptr != NULL;
1173        timer_ptr = timer_ptr->next)
1174     {
1175       if (timer_ptr->timer_id == id)
1176         break;
1177     }
1178
1179   if (timer_ptr == NULL)
1180     return;
1181   /* Get rid of the timer in the timer list.  */
1182   if (timer_ptr == timer_list.first_timer)
1183     timer_list.first_timer = timer_ptr->next;
1184   else
1185     {
1186       for (prev_timer = timer_list.first_timer;
1187            prev_timer->next != timer_ptr;
1188            prev_timer = prev_timer->next)
1189         ;
1190       prev_timer->next = timer_ptr->next;
1191     }
1192   xfree (timer_ptr);
1193
1194   gdb_notifier.timeout_valid = 0;
1195 }
1196
1197 /* Update the timeout for the select() or poll().  Returns true if the
1198    timer has already expired, false otherwise.  */
1199
1200 static int
1201 update_wait_timeout (void)
1202 {
1203   struct timeval time_now, delta;
1204
1205   if (timer_list.first_timer != NULL)
1206     {
1207       gettimeofday (&time_now, NULL);
1208       delta.tv_sec = timer_list.first_timer->when.tv_sec - time_now.tv_sec;
1209       delta.tv_usec = timer_list.first_timer->when.tv_usec - time_now.tv_usec;
1210       /* Borrow?  */
1211       if (delta.tv_usec < 0)
1212         {
1213           delta.tv_sec -= 1;
1214           delta.tv_usec += 1000000;
1215         }
1216
1217       /* Cannot simply test if delta.tv_sec is negative because time_t
1218          might be unsigned.  */
1219       if (timer_list.first_timer->when.tv_sec < time_now.tv_sec
1220           || (timer_list.first_timer->when.tv_sec == time_now.tv_sec
1221               && timer_list.first_timer->when.tv_usec < time_now.tv_usec))
1222         {
1223           /* It expired already.  */
1224           delta.tv_sec = 0;
1225           delta.tv_usec = 0;
1226         }
1227
1228       /* Update the timeout for select/ poll.  */
1229       if (use_poll)
1230         {
1231 #ifdef HAVE_POLL
1232           gdb_notifier.poll_timeout = delta.tv_sec * 1000;
1233 #else
1234           internal_error (__FILE__, __LINE__,
1235                           _("use_poll without HAVE_POLL"));
1236 #endif /* HAVE_POLL */
1237         }
1238       else
1239         {
1240           gdb_notifier.select_timeout.tv_sec = delta.tv_sec;
1241           gdb_notifier.select_timeout.tv_usec = delta.tv_usec;
1242         }
1243       gdb_notifier.timeout_valid = 1;
1244
1245       if (delta.tv_sec == 0 && delta.tv_usec == 0)
1246         return 1;
1247     }
1248   else
1249     gdb_notifier.timeout_valid = 0;
1250
1251   return 0;
1252 }
1253
1254 /* Check whether a timer in the timers queue is ready.  If a timer is
1255    ready, call its handler and return.  Update the timeout for the
1256    select() or poll() as well.  Return 1 if an event was handled,
1257    otherwise returns 0.*/
1258
1259 static int
1260 poll_timers (void)
1261 {
1262   if (update_wait_timeout ())
1263     {
1264       struct gdb_timer *timer_ptr = timer_list.first_timer;
1265       timer_handler_func *proc = timer_ptr->proc;
1266       gdb_client_data client_data = timer_ptr->client_data;
1267
1268       /* Get rid of the timer from the beginning of the list.  */
1269       timer_list.first_timer = timer_ptr->next;
1270
1271       /* Delete the timer before calling the callback, not after, in
1272          case the callback itself decides to try deleting the timer
1273          too.  */
1274       xfree (timer_ptr);
1275
1276       /* Call the procedure associated with that timer.  */
1277       (proc) (client_data);
1278
1279       return 1;
1280     }
1281
1282   return 0;
1283 }