mirror of /home/gitosis/repositories/libev.git
*** empty log message ***
parent
4d2c47a95a
commit
a391c51a56
22
ev.c
22
ev.c
|
@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue