void OSSim::tryWakeupParent(Pid_t cpid) { ProcessId *proc = ProcessId::getProcessId(cpid); I(proc); Pid_t ppid = proc->getPPid(); if (ppid < 0) return; ProcessId *pproc = ProcessId::getProcessId(ppid); // Does the parent process still exist? if(pproc == 0) return; if(pproc->getState()==WaitingState) { LOG("Waiting pid(%d) is awaked (child %d call)",ppid,cpid); pproc->setState(InvalidState); cpus.makeRunnable(pproc); } }
Pid_t OSSim::eventGetPPid(Pid_t pid) { ProcessId *proc = ProcessId::getProcessId(pid); I(proc); return proc->getPPid(); }