… | |
… | |
867 | |
867 | |
868 | #ifndef _WIN32 |
868 | #ifndef _WIN32 |
869 | |
869 | |
870 | static ev_signal childev; |
870 | static ev_signal childev; |
871 | |
871 | |
|
|
872 | #ifndef WIFCONTINUED |
|
|
873 | # define WIFCONTINUED(status) 0 |
|
|
874 | #endif |
|
|
875 | |
872 | void inline_speed |
876 | void inline_speed |
873 | child_reap (EV_P_ ev_signal *sw, int chain, int pid, int status) |
877 | child_reap (EV_P_ ev_signal *sw, int chain, int pid, int status) |
874 | { |
878 | { |
875 | ev_child *w; |
879 | ev_child *w; |
|
|
880 | int traced = WIFSTOPPED (status) || WIFCONTINUED (status); |
876 | |
881 | |
877 | for (w = (ev_child *)childs [chain & (EV_PID_HASHSIZE - 1)]; w; w = (ev_child *)((WL)w)->next) |
882 | for (w = (ev_child *)childs [chain & (EV_PID_HASHSIZE - 1)]; w; w = (ev_child *)((WL)w)->next) |
|
|
883 | { |
878 | if (w->pid == pid || !w->pid) |
884 | if ((w->pid == pid || !w->pid) |
|
|
885 | && (!traced || (w->flags & 1))) |
879 | { |
886 | { |
880 | ev_set_priority (w, ev_priority (sw)); /* need to do it *now* */ |
887 | ev_set_priority (w, ev_priority (sw)); /* need to do it *now* */ |
881 | w->rpid = pid; |
888 | w->rpid = pid; |
882 | w->rstatus = status; |
889 | w->rstatus = status; |
883 | ev_feed_event (EV_A_ (W)w, EV_CHILD); |
890 | ev_feed_event (EV_A_ (W)w, EV_CHILD); |
884 | } |
891 | } |
|
|
892 | } |
885 | } |
893 | } |
886 | |
894 | |
887 | #ifndef WCONTINUED |
895 | #ifndef WCONTINUED |
888 | # define WCONTINUED 0 |
896 | # define WCONTINUED 0 |
889 | #endif |
897 | #endif |