if(setjmp(_mainjmp))
_schedinit(p);
-//_threaddebuglevel = (DBGSCHED|DBGCHAN|DBGREND)^~0;
+ //_threaddebuglevel = (DBGSCHED|DBGCHAN|DBGREND);
_systhreadinit();
_qlockinit(_threadrendezvous);
_sysfatal = _threadsysfatal;
if(buf[0]=='\0')
strcpy(buf, "exec failed");
write(e->fd[1], buf, strlen(buf));
- close(e->fd[1]);
_exits(buf);
}
int
_schedexec(Execargs *e)
{
- int pid;
+ int pid, flag;
- switch(pid = rfork(RFREND|RFNOTEG|RFFDG|RFMEM|RFPROC)){
+ flag = (_threadwaitchan == nil) ? RFNOWAIT : 0;
+ switch(pid = rfork(RFREND|RFNOTEG|RFFDG|RFMEM|RFPROC|flag)){
case 0:
efork(e);
default: