Beispiel #1
0
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);
    }
}
Beispiel #2
0
Pid_t OSSim::eventGetPPid(Pid_t pid)
{
    ProcessId *proc = ProcessId::getProcessId(pid);
    I(proc);
    return proc->getPPid();
}