… | |
… | |
1523 | head = &(*head)->next; |
1523 | head = &(*head)->next; |
1524 | } |
1524 | } |
1525 | } |
1525 | } |
1526 | |
1526 | |
1527 | void inline_speed |
1527 | void inline_speed |
1528 | ev_clear_pending (EV_P_ W w) |
1528 | clear_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 | |
|
|
1537 | void |
|
|
1538 | ev_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 | |
1537 | void inline_size |
1555 | void inline_size |
1538 | pri_adjust (EV_P_ W w) |
1556 | pri_adjust (EV_P_ W w) |
… | |
… | |
1578 | } |
1596 | } |
1579 | |
1597 | |
1580 | void |
1598 | void |
1581 | ev_io_stop (EV_P_ ev_io *w) |
1599 | ev_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 | |
1613 | void |
1631 | void |
1614 | ev_timer_stop (EV_P_ ev_timer *w) |
1632 | ev_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 | |
1681 | void |
1699 | void |
1682 | ev_periodic_stop (EV_P_ ev_periodic *w) |
1700 | ev_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 | |
1745 | void |
1763 | void |
1746 | ev_signal_stop (EV_P_ ev_signal *w) |
1764 | ev_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 | |
1772 | void |
1790 | void |
1773 | ev_child_stop (EV_P_ ev_child *w) |
1791 | ev_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 | |
2018 | void |
2036 | void |
2019 | ev_stat_stop (EV_P_ ev_stat *w) |
2037 | ev_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 | |
2054 | void |
2072 | void |
2055 | ev_idle_stop (EV_P_ ev_idle *w) |
2073 | ev_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 | |
2084 | void |
2102 | void |
2085 | ev_prepare_stop (EV_P_ ev_prepare *w) |
2103 | ev_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 | |
2111 | void |
2129 | void |
2112 | ev_check_stop (EV_P_ ev_check *w) |
2130 | ev_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 | |
2163 | void |
2181 | void |
2164 | ev_embed_stop (EV_P_ ev_embed *w) |
2182 | ev_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 | |
2188 | void |
2206 | void |
2189 | ev_fork_stop (EV_P_ ev_fork *w) |
2207 | ev_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; |