summaryrefslogtreecommitdiff
path: root/ev.c
diff options
context:
space:
mode:
authorroot <root>2012-05-01 22:01:40 +0000
committerroot <root>2012-05-01 22:01:40 +0000
commit6057940c0ca57e2a9feba9eac38daafae9b89635 (patch)
tree3510e762c10269baa7ca22bed50bf96ffb1afaf5 /ev.c
parent6b2ac50b05c2fbd0025f2cb5ff1c654bdab8949a (diff)
*** empty log message ***
Diffstat (limited to 'ev.c')
-rw-r--r--ev.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/ev.c b/ev.c
index 449556d..e24ed6f 100644
--- a/ev.c
+++ b/ev.c
@@ -1846,6 +1846,8 @@ evpipe_init (EV_P)
inline_speed void
evpipe_write (EV_P_ EV_ATOMIC_T *flag)
{
+ ECB_MEMORY_FENCE; /* push out the write before this function was called, acquire flag */
+
if (expect_true (*flag))
return;
@@ -1914,11 +1916,15 @@ pipecb (EV_P_ ev_io *iow, int revents)
pipe_write_skipped = 0;
+ ECB_MEMORY_FENCE; /* push out skipped, acquire flags */
+
#if EV_SIGNAL_ENABLE
if (sig_pending)
{
sig_pending = 0;
+ ECB_MEMORY_FENCE_RELEASE;
+
for (i = EV_NSIG - 1; i--; )
if (expect_false (signals [i].pending))
ev_feed_signal_event (EV_A_ i + 1);
@@ -1930,6 +1936,8 @@ pipecb (EV_P_ ev_io *iow, int revents)
{
async_pending = 0;
+ ECB_MEMORY_FENCE_RELEASE;
+
for (i = asynccnt; i--; )
if (asyncs [i]->sent)
{