diff options
author | root <root> | 2007-11-05 16:42:15 +0000 |
---|---|---|
committer | root <root> | 2007-11-05 16:42:15 +0000 |
commit | edc31a9118d9252f091b336522858c4b3e36e2f8 (patch) | |
tree | d27cc7a16d85341fee3a94881e3c44dccfd42b85 /ev.c | |
parent | 7adde6c7c7a709d21a4cacdf6a1b3bc9418245df (diff) |
*** empty log message ***
Diffstat (limited to 'ev.c')
-rw-r--r-- | ev.c | 22 |
1 files changed, 22 insertions, 0 deletions
@@ -147,6 +147,12 @@ typedef struct ev_watcher_time *WT; static int have_monotonic; /* did clock_gettime (CLOCK_MONOTONIC) work? */ +#if WIN32 +/* note: the comment below could not be substantiated, but what would I care */ +/* MSDN says this is required to handle SIGFPE */ +volatile double SIGFPE_REQ = 0.0f; +#endif + /*****************************************************************************/ typedef struct @@ -234,6 +240,14 @@ ev_now (EV_P) cur = newcnt; \ } +#define array_slim(stem) \ + if (stem ## max < array_roundsize (stem ## cnt >> 2)) \ + { \ + stem ## max = array_roundsize (stem ## cnt >> 1); \ + base = realloc (base, sizeof (*base) * (stem ## max)); \ + fprintf (stderr, "slimmed down " # stem " to %d\n", stem ## max);/*D*/\ + } + #define array_free(stem, idx) \ free (stem ## s idx); stem ## cnt idx = stem ## max idx = 0; @@ -458,6 +472,10 @@ signals_init (ANSIG *base, int count) static void sighandler (int signum) { +#if WIN32 + signal (signum, sighandler); +#endif + signals [signum - 1].gotsig = 1; if (!gotsig) @@ -1312,11 +1330,15 @@ ev_signal_start (EV_P_ struct ev_signal *w) if (!((WL)w)->next) { +#if WIN32 + signal (w->signum, sighandler); +#else struct sigaction sa; sa.sa_handler = sighandler; sigfillset (&sa.sa_mask); sa.sa_flags = SA_RESTART; /* if restarting works we save one iteration */ sigaction (w->signum, &sa, 0); +#endif } } |