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

Comparing libev/ev.c (file contents):
Revision 1.165 by root, Fri Dec 7 18:09:38 2007 UTC vs.
Revision 1.166 by root, Sat Dec 8 03:53:36 2007 UTC

1523 head = &(*head)->next; 1523 head = &(*head)->next;
1524 } 1524 }
1525} 1525}
1526 1526
1527void inline_speed 1527void inline_speed
1528ev_clear_pending (EV_P_ W w) 1528clear_pending (EV_P_ W w)
1529{ 1529{
1530 if (w->pending) 1530 if (w->pending)
1531 { 1531 {
1532 pendings [ABSPRI (w)][w->pending - 1].w = 0; 1532 pendings [ABSPRI (w)][w->pending - 1].w = 0;
1533 w->pending = 0; 1533 w->pending = 0;
1534 }
1535}
1536
1537void
1538ev_clear_pending (EV_P_ void *w, int invoke)
1539{
1540 W w_ = (W)w;
1541 int pending = w_->pending;
1542
1543 if (pending)
1544 {
1545 ANPENDING *p = pendings [ABSPRI (w_)] + pending - 1;
1546
1547 w_->pending = 0;
1548 p->w = 0;
1549
1550 if (invoke)
1551 EV_CB_INVOKE (w_, p->events);
1534 } 1552 }
1535} 1553}
1536 1554
1537void inline_size 1555void inline_size
1538pri_adjust (EV_P_ W w) 1556pri_adjust (EV_P_ W w)
1578} 1596}
1579 1597
1580void 1598void
1581ev_io_stop (EV_P_ ev_io *w) 1599ev_io_stop (EV_P_ ev_io *w)
1582{ 1600{
1583 ev_clear_pending (EV_A_ (W)w); 1601 clear_pending (EV_A_ (W)w);
1584 if (expect_false (!ev_is_active (w))) 1602 if (expect_false (!ev_is_active (w)))
1585 return; 1603 return;
1586 1604
1587 assert (("ev_io_start called with illegal fd (must stay constant after start!)", w->fd >= 0 && w->fd < anfdmax)); 1605 assert (("ev_io_start called with illegal fd (must stay constant after start!)", w->fd >= 0 && w->fd < anfdmax));
1588 1606
1611} 1629}
1612 1630
1613void 1631void
1614ev_timer_stop (EV_P_ ev_timer *w) 1632ev_timer_stop (EV_P_ ev_timer *w)
1615{ 1633{
1616 ev_clear_pending (EV_A_ (W)w); 1634 clear_pending (EV_A_ (W)w);
1617 if (expect_false (!ev_is_active (w))) 1635 if (expect_false (!ev_is_active (w)))
1618 return; 1636 return;
1619 1637
1620 assert (("internal timer heap corruption", timers [((W)w)->active - 1] == w)); 1638 assert (("internal timer heap corruption", timers [((W)w)->active - 1] == w));
1621 1639
1679} 1697}
1680 1698
1681void 1699void
1682ev_periodic_stop (EV_P_ ev_periodic *w) 1700ev_periodic_stop (EV_P_ ev_periodic *w)
1683{ 1701{
1684 ev_clear_pending (EV_A_ (W)w); 1702 clear_pending (EV_A_ (W)w);
1685 if (expect_false (!ev_is_active (w))) 1703 if (expect_false (!ev_is_active (w)))
1686 return; 1704 return;
1687 1705
1688 assert (("internal periodic heap corruption", periodics [((W)w)->active - 1] == w)); 1706 assert (("internal periodic heap corruption", periodics [((W)w)->active - 1] == w));
1689 1707
1743} 1761}
1744 1762
1745void 1763void
1746ev_signal_stop (EV_P_ ev_signal *w) 1764ev_signal_stop (EV_P_ ev_signal *w)
1747{ 1765{
1748 ev_clear_pending (EV_A_ (W)w); 1766 clear_pending (EV_A_ (W)w);
1749 if (expect_false (!ev_is_active (w))) 1767 if (expect_false (!ev_is_active (w)))
1750 return; 1768 return;
1751 1769
1752 wlist_del ((WL *)&signals [w->signum - 1].head, (WL)w); 1770 wlist_del ((WL *)&signals [w->signum - 1].head, (WL)w);
1753 ev_stop (EV_A_ (W)w); 1771 ev_stop (EV_A_ (W)w);
1770} 1788}
1771 1789
1772void 1790void
1773ev_child_stop (EV_P_ ev_child *w) 1791ev_child_stop (EV_P_ ev_child *w)
1774{ 1792{
1775 ev_clear_pending (EV_A_ (W)w); 1793 clear_pending (EV_A_ (W)w);
1776 if (expect_false (!ev_is_active (w))) 1794 if (expect_false (!ev_is_active (w)))
1777 return; 1795 return;
1778 1796
1779 wlist_del ((WL *)&childs [w->pid & (EV_PID_HASHSIZE - 1)], (WL)w); 1797 wlist_del ((WL *)&childs [w->pid & (EV_PID_HASHSIZE - 1)], (WL)w);
1780 ev_stop (EV_A_ (W)w); 1798 ev_stop (EV_A_ (W)w);
2016} 2034}
2017 2035
2018void 2036void
2019ev_stat_stop (EV_P_ ev_stat *w) 2037ev_stat_stop (EV_P_ ev_stat *w)
2020{ 2038{
2021 ev_clear_pending (EV_A_ (W)w); 2039 clear_pending (EV_A_ (W)w);
2022 if (expect_false (!ev_is_active (w))) 2040 if (expect_false (!ev_is_active (w)))
2023 return; 2041 return;
2024 2042
2025#if EV_USE_INOTIFY 2043#if EV_USE_INOTIFY
2026 infy_del (EV_A_ w); 2044 infy_del (EV_A_ w);
2052} 2070}
2053 2071
2054void 2072void
2055ev_idle_stop (EV_P_ ev_idle *w) 2073ev_idle_stop (EV_P_ ev_idle *w)
2056{ 2074{
2057 ev_clear_pending (EV_A_ (W)w); 2075 clear_pending (EV_A_ (W)w);
2058 if (expect_false (!ev_is_active (w))) 2076 if (expect_false (!ev_is_active (w)))
2059 return; 2077 return;
2060 2078
2061 { 2079 {
2062 int active = ((W)w)->active; 2080 int active = ((W)w)->active;
2082} 2100}
2083 2101
2084void 2102void
2085ev_prepare_stop (EV_P_ ev_prepare *w) 2103ev_prepare_stop (EV_P_ ev_prepare *w)
2086{ 2104{
2087 ev_clear_pending (EV_A_ (W)w); 2105 clear_pending (EV_A_ (W)w);
2088 if (expect_false (!ev_is_active (w))) 2106 if (expect_false (!ev_is_active (w)))
2089 return; 2107 return;
2090 2108
2091 { 2109 {
2092 int active = ((W)w)->active; 2110 int active = ((W)w)->active;
2109} 2127}
2110 2128
2111void 2129void
2112ev_check_stop (EV_P_ ev_check *w) 2130ev_check_stop (EV_P_ ev_check *w)
2113{ 2131{
2114 ev_clear_pending (EV_A_ (W)w); 2132 clear_pending (EV_A_ (W)w);
2115 if (expect_false (!ev_is_active (w))) 2133 if (expect_false (!ev_is_active (w)))
2116 return; 2134 return;
2117 2135
2118 { 2136 {
2119 int active = ((W)w)->active; 2137 int active = ((W)w)->active;
2161} 2179}
2162 2180
2163void 2181void
2164ev_embed_stop (EV_P_ ev_embed *w) 2182ev_embed_stop (EV_P_ ev_embed *w)
2165{ 2183{
2166 ev_clear_pending (EV_A_ (W)w); 2184 clear_pending (EV_A_ (W)w);
2167 if (expect_false (!ev_is_active (w))) 2185 if (expect_false (!ev_is_active (w)))
2168 return; 2186 return;
2169 2187
2170 ev_io_stop (EV_A_ &w->io); 2188 ev_io_stop (EV_A_ &w->io);
2171 2189
2186} 2204}
2187 2205
2188void 2206void
2189ev_fork_stop (EV_P_ ev_fork *w) 2207ev_fork_stop (EV_P_ ev_fork *w)
2190{ 2208{
2191 ev_clear_pending (EV_A_ (W)w); 2209 clear_pending (EV_A_ (W)w);
2192 if (expect_false (!ev_is_active (w))) 2210 if (expect_false (!ev_is_active (w)))
2193 return; 2211 return;
2194 2212
2195 { 2213 {
2196 int active = ((W)w)->active; 2214 int active = ((W)w)->active;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines