|
|
@ -1851,7 +1851,6 @@ evpipe_write (EV_P_ EV_ATOMIC_T *flag) |
|
|
|
return; |
|
|
|
|
|
|
|
*flag = 1; |
|
|
|
|
|
|
|
ECB_MEMORY_FENCE_RELEASE; /* make sure flag is visible before the wakeup */ |
|
|
|
|
|
|
|
pipe_write_skipped = 1; |
|
|
@ -1862,7 +1861,8 @@ evpipe_write (EV_P_ EV_ATOMIC_T *flag) |
|
|
|
{ |
|
|
|
int old_errno; |
|
|
|
|
|
|
|
pipe_write_skipped = 0; /* just an optimisation, no fence needed */ |
|
|
|
pipe_write_skipped = 0; |
|
|
|
ECB_MEMORY_FENCE_RELEASE; |
|
|
|
|
|
|
|
old_errno = errno; /* save errno because write will clobber it */ |
|
|
|
|
|
|
@ -1931,7 +1931,7 @@ pipecb (EV_P_ ev_io *iow, int revents) |
|
|
|
{ |
|
|
|
sig_pending = 0; |
|
|
|
|
|
|
|
ECB_MEMORY_FENCE_RELEASE; |
|
|
|
ECB_MEMORY_FENCE; |
|
|
|
|
|
|
|
for (i = EV_NSIG - 1; i--; ) |
|
|
|
if (expect_false (signals [i].pending)) |
|
|
@ -1944,12 +1944,13 @@ pipecb (EV_P_ ev_io *iow, int revents) |
|
|
|
{ |
|
|
|
async_pending = 0; |
|
|
|
|
|
|
|
ECB_MEMORY_FENCE_RELEASE; |
|
|
|
ECB_MEMORY_FENCE; |
|
|
|
|
|
|
|
for (i = asynccnt; i--; ) |
|
|
|
if (asyncs [i]->sent) |
|
|
|
{ |
|
|
|
asyncs [i]->sent = 0; |
|
|
|
ECB_MEMORY_FENCE_RELEASE; |
|
|
|
ev_feed_event (EV_A_ asyncs [i], EV_ASYNC); |
|
|
|
} |
|
|
|
} |
|
|
@ -2004,6 +2005,7 @@ ev_feed_signal_event (EV_P_ int signum) EV_THROW |
|
|
|
#endif |
|
|
|
|
|
|
|
signals [signum].pending = 0; |
|
|
|
MEMORY_FENCE_RELEASE; |
|
|
|
|
|
|
|
for (w = signals [signum].head; w; w = w->next) |
|
|
|
ev_feed_event (EV_A_ (W)w, EV_SIGNAL); |
|
|
|