ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/libev/ev.c
(Generate patch)

Comparing libev/ev.c (file contents):
Revision 1.435 by root, Sat May 26 08:52:09 2012 UTC vs.
Revision 1.436 by root, Tue May 29 20:44:39 2012 UTC

1849 1849
1850 if (expect_true (*flag)) 1850 if (expect_true (*flag))
1851 return; 1851 return;
1852 1852
1853 *flag = 1; 1853 *flag = 1;
1854
1855 ECB_MEMORY_FENCE_RELEASE; /* make sure flag is visible before the wakeup */ 1854 ECB_MEMORY_FENCE_RELEASE; /* make sure flag is visible before the wakeup */
1856 1855
1857 pipe_write_skipped = 1; 1856 pipe_write_skipped = 1;
1858 1857
1859 ECB_MEMORY_FENCE; /* make sure pipe_write_skipped is visible before we check pipe_write_wanted */ 1858 ECB_MEMORY_FENCE; /* make sure pipe_write_skipped is visible before we check pipe_write_wanted */
1860 1859
1861 if (pipe_write_wanted) 1860 if (pipe_write_wanted)
1862 { 1861 {
1863 int old_errno; 1862 int old_errno;
1864 1863
1865 pipe_write_skipped = 0; /* just an optimisation, no fence needed */ 1864 pipe_write_skipped = 0;
1865 ECB_MEMORY_FENCE_RELEASE;
1866 1866
1867 old_errno = errno; /* save errno because write will clobber it */ 1867 old_errno = errno; /* save errno because write will clobber it */
1868 1868
1869#if EV_USE_EVENTFD 1869#if EV_USE_EVENTFD
1870 if (evfd >= 0) 1870 if (evfd >= 0)
1929#if EV_SIGNAL_ENABLE 1929#if EV_SIGNAL_ENABLE
1930 if (sig_pending) 1930 if (sig_pending)
1931 { 1931 {
1932 sig_pending = 0; 1932 sig_pending = 0;
1933 1933
1934 ECB_MEMORY_FENCE_RELEASE; 1934 ECB_MEMORY_FENCE;
1935 1935
1936 for (i = EV_NSIG - 1; i--; ) 1936 for (i = EV_NSIG - 1; i--; )
1937 if (expect_false (signals [i].pending)) 1937 if (expect_false (signals [i].pending))
1938 ev_feed_signal_event (EV_A_ i + 1); 1938 ev_feed_signal_event (EV_A_ i + 1);
1939 } 1939 }
1942#if EV_ASYNC_ENABLE 1942#if EV_ASYNC_ENABLE
1943 if (async_pending) 1943 if (async_pending)
1944 { 1944 {
1945 async_pending = 0; 1945 async_pending = 0;
1946 1946
1947 ECB_MEMORY_FENCE_RELEASE; 1947 ECB_MEMORY_FENCE;
1948 1948
1949 for (i = asynccnt; i--; ) 1949 for (i = asynccnt; i--; )
1950 if (asyncs [i]->sent) 1950 if (asyncs [i]->sent)
1951 { 1951 {
1952 asyncs [i]->sent = 0; 1952 asyncs [i]->sent = 0;
1953 ECB_MEMORY_FENCE_RELEASE;
1953 ev_feed_event (EV_A_ asyncs [i], EV_ASYNC); 1954 ev_feed_event (EV_A_ asyncs [i], EV_ASYNC);
1954 } 1955 }
1955 } 1956 }
1956#endif 1957#endif
1957} 1958}
2002 if (expect_false (signals [signum].loop != EV_A)) 2003 if (expect_false (signals [signum].loop != EV_A))
2003 return; 2004 return;
2004#endif 2005#endif
2005 2006
2006 signals [signum].pending = 0; 2007 signals [signum].pending = 0;
2008 MEMORY_FENCE_RELEASE;
2007 2009
2008 for (w = signals [signum].head; w; w = w->next) 2010 for (w = signals [signum].head; w; w = w->next)
2009 ev_feed_event (EV_A_ (W)w, EV_SIGNAL); 2011 ev_feed_event (EV_A_ (W)w, EV_SIGNAL);
2010} 2012}
2011 2013

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines