diff options
author | Frans Kaashoek <[email protected]> | 2022-08-23 07:31:08 -0400 |
---|---|---|
committer | Frans Kaashoek <[email protected]> | 2022-08-23 07:31:08 -0400 |
commit | cd6207a972cf7692dceb837f460234eae9df5052 (patch) | |
tree | c2e1f8be9e5d030727ee4d5c4f033b8f2e5a3314 /kernel/proc.c | |
parent | bc48c2be47ed4994d23327980737fef441fbbcc8 (diff) | |
parent | 4f716c8550b406c3e4b3e0c21b986ef99bc06c40 (diff) | |
download | xv6-labs-cd6207a972cf7692dceb837f460234eae9df5052.tar.gz xv6-labs-cd6207a972cf7692dceb837f460234eae9df5052.tar.bz2 xv6-labs-cd6207a972cf7692dceb837f460234eae9df5052.zip |
Merge branch 'riscv-killed' into riscv
Diffstat (limited to 'kernel/proc.c')
-rw-r--r-- | kernel/proc.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/kernel/proc.c b/kernel/proc.c index 1ed3ee5..8d0ca8c 100644 --- a/kernel/proc.c +++ b/kernel/proc.c @@ -424,7 +424,7 @@ wait(uint64 addr) } // No point waiting if we don't have any children. - if(!havekids || p->killed){ + if(!havekids || killed(p)){ release(&wait_lock); return -1; } @@ -603,6 +603,25 @@ kill(int pid) return -1; } +void +setkilled(struct proc *p) +{ + acquire(&p->lock); + p->killed = 1; + release(&p->lock); +} + +int +killed(struct proc *p) +{ + int k; + + acquire(&p->lock); + k = p->killed; + release(&p->lock); + return k; +} + // Copy to either a user address, or kernel address, // depending on usr_dst. // Returns 0 on success, -1 on error. |