diff --git a/src/scheme/proc.rs b/src/scheme/proc.rs index 56bd1f977e..8e903adf57 100644 --- a/src/scheme/proc.rs +++ b/src/scheme/proc.rs @@ -284,6 +284,7 @@ impl ProcScheme { false, ), "sched-affinity" => (ContextHandle::SchedAffinity, true), + "status" => (ContextHandle::Status, false), _ => return Ok(None), })) } diff --git a/src/syscall/process.rs b/src/syscall/process.rs index 08a4cff251..b8b2d7d6c5 100644 --- a/src/syscall/process.rs +++ b/src/syscall/process.rs @@ -78,6 +78,7 @@ pub fn exit(status: usize) -> ! { } process_lock.write().status = ProcessStatus::Exited(status); + context_lock.write().status = context::Status::Exited { user_data: status }; let children = process_lock.write().waitpid.receive_all(); @@ -519,7 +520,7 @@ pub fn waitpid( let processes = process::PROCESSES.read(); for (_id, process_lock) in processes.iter() { let process = process_lock.read(); - if process.pgid == ppid { + if process.ppid == ppid { found = true; break; }