summaryrefslogtreecommitdiff
path: root/kernel/proc.h
diff options
context:
space:
mode:
authorFrans Kaashoek <[email protected]>2019-07-02 09:14:47 -0400
committerFrans Kaashoek <[email protected]>2019-07-02 09:14:47 -0400
commit67702cf706bce7adef472f0caa48d81ddfaeb33a (patch)
treefd61e4036c4f5ec0944c987a7dffc9c04422d8c6 /kernel/proc.h
parent535ac52efadc5c5cdb0483ad55c306cfaff71d50 (diff)
downloadxv6-labs-67702cf706bce7adef472f0caa48d81ddfaeb33a.tar.gz
xv6-labs-67702cf706bce7adef472f0caa48d81ddfaeb33a.tar.bz2
xv6-labs-67702cf706bce7adef472f0caa48d81ddfaeb33a.zip
Checkpoint switching to per-process locks, in attempt clarify xv6's
locking plan, which is a difficult to understand because ptable lock protects many invariants. This implementation has a bug: once in a while xv6 unlocks a proc lock that is locked by another core.
Diffstat (limited to 'kernel/proc.h')
-rw-r--r--kernel/proc.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/kernel/proc.h b/kernel/proc.h
index 278e4cd..0fa61ff 100644
--- a/kernel/proc.h
+++ b/kernel/proc.h
@@ -82,6 +82,7 @@ enum procstate { UNUSED, EMBRYO, SLEEPING, RUNNABLE, RUNNING, ZOMBIE };
// Per-process state
struct proc {
+ struct spinlock lock;
char *kstack; // Bottom of kernel stack for this process
uint64 sz; // Size of process memory (bytes)
pagetable_t pagetable; // Page table