--- cvsroot/EV/EV.xs 2007/10/31 18:28:00 1.22 +++ cvsroot/EV/EV.xs 2007/10/31 19:07:43 1.23 @@ -25,7 +25,8 @@ *stash_signal, *stash_idle, *stash_prepare, - *stash_check; + *stash_check, + *stash_child; static int sv_signum (SV *sig) @@ -246,6 +247,7 @@ stash_idle = gv_stashpv ("EV::Idle" , 1); stash_prepare = gv_stashpv ("EV::Prepare" , 1); stash_check = gv_stashpv ("EV::Check" , 1); + stash_child = gv_stashpv ("EV::Child" , 1); { SV *sv = perl_get_sv ("EV::API", TRUE); @@ -380,6 +382,16 @@ OUTPUT: RETVAL +struct ev_child *child (SV *cb, int pid) + ALIAS: + check_ns = 1 + CODE: + RETVAL = e_new (sizeof (struct ev_check), cb); + evchild (RETVAL, pid); + if (!ix) evchild_start (RETVAL); + OUTPUT: + RETVAL + PROTOTYPES: DISABLE @@ -532,6 +544,21 @@ void evcheck_stop (struct ev_check *w) +MODULE = EV PACKAGE = EV::Child PREFIX = evchild_ + +void evchild_start (struct ev_child *w) + +void evchild_stop (struct ev_child *w) + +void set (struct ev_child *w, int pid) + CODE: +{ + int active = w->active; + if (active) evchild_stop (w); + evchild_set (w, pid); + if (active) evchild_start (w); +} + #if 0 MODULE = EV PACKAGE = EV::DNS PREFIX = evdns_