diff options
| author | Frans Kaashoek <kaashoek@mit.edu> | 2022-08-23 07:31:08 -0400 |
|---|---|---|
| committer | Frans Kaashoek <kaashoek@mit.edu> | 2022-08-23 07:31:08 -0400 |
| commit | cd6207a972cf7692dceb837f460234eae9df5052 (patch) | |
| tree | c2e1f8be9e5d030727ee4d5c4f033b8f2e5a3314 /kernel/proc.c | |
| parent | bc48c2be47ed4994d23327980737fef441fbbcc8 (diff) | |
| parent | 4f716c8550b406c3e4b3e0c21b986ef99bc06c40 (diff) | |
| download | xv6-labs-2022-cd6207a972cf7692dceb837f460234eae9df5052.tar.xz xv6-labs-2022-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. |
