Skip to content
Snippets Groups Projects
Commit b6a02c44 authored by Simon Marlow's avatar Simon Marlow
Browse files

[project @ 1999-10-04 16:14:34 by simonmar]

Service signal handlers if we get an EINTR from select(2).
parent c4729619
No related branches found
No related tags found
No related merge requests found
/* ----------------------------------------------------------------------------- /* -----------------------------------------------------------------------------
* $Id: Select.c,v 1.2 1999/09/13 08:28:45 sof Exp $ * $Id: Select.c,v 1.3 1999/10/04 16:14:34 simonmar Exp $
* *
* (c) The GHC Team 1995-1999 * (c) The GHC Team 1995-1999
* *
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include "RtsUtils.h" #include "RtsUtils.h"
#include "RtsFlags.h" #include "RtsFlags.h"
#include "Itimer.h" #include "Itimer.h"
#include "Signals.h"
# if defined(HAVE_SYS_TYPES_H) # if defined(HAVE_SYS_TYPES_H)
# include <sys/types.h> # include <sys/types.h>
...@@ -114,6 +115,15 @@ awaitEvent(rtsBool wait) ...@@ -114,6 +115,15 @@ awaitEvent(rtsBool wait)
fprintf(stderr, "awaitEvent: select failed\n"); fprintf(stderr, "awaitEvent: select failed\n");
stg_exit(EXIT_FAILURE); stg_exit(EXIT_FAILURE);
} }
/* We got a signal; could be one of ours. If so, we need
* to start up the signal handler straight away, otherwise
* we could block for a long time before the signal is
* serviced.
*/
if (signals_pending()) {
start_signal_handlers();
return;
}
} }
if (numFound != 0) { if (numFound != 0) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment