diff options
author | rtm <rtm> | 2006-08-08 19:58:06 +0000 |
---|---|---|
committer | rtm <rtm> | 2006-08-08 19:58:06 +0000 |
commit | 0e84a0ec6e7893dad13dff9a958c5bc987b79c82 (patch) | |
tree | 5739d0a2af8277db7a47c74e52975d9e9d81cef7 /proc.h | |
parent | e8d11c2e846ad15b32caacc8a919722b76d00f79 (diff) | |
download | xv6-labs-0e84a0ec6e7893dad13dff9a958c5bc987b79c82.tar.gz xv6-labs-0e84a0ec6e7893dad13dff9a958c5bc987b79c82.tar.bz2 xv6-labs-0e84a0ec6e7893dad13dff9a958c5bc987b79c82.zip |
fix race in holding() check in acquire()
give cpu1 a TSS and gdt for when it enters scheduler()
and a pseudo proc[] entry for each cpu
cpu0 waits for each other cpu to start up
read() for files
Diffstat (limited to 'proc.h')
-rw-r--r-- | proc.h | 7 |
1 files changed, 4 insertions, 3 deletions
@@ -33,7 +33,8 @@ struct jmpbuf { int eip; }; -enum proc_state { UNUSED, EMBRYO, SLEEPING, RUNNABLE, RUNNING, ZOMBIE }; +enum proc_state { UNUSED, EMBRYO, SLEEPING, RUNNABLE, RUNNING, ZOMBIE, + IDLEPROC }; struct proc{ char *mem; // start of process's physical memory @@ -67,8 +68,8 @@ extern struct proc *curproc[NCPU]; // can be NULL if no proc running. struct cpu { uchar apicid; // Local APIC ID struct jmpbuf jmpbuf; - char mpstack[MPSTACK]; // per-cpu start-up stack, only used to get into main() - struct proc *lastproc; // last proc scheduled on this cpu (never NULL) + char mpstack[MPSTACK]; // per-cpu start-up stack + volatile int booted; int nlock; // # of locks currently held struct spinlock *lastacquire; // xxx debug struct spinlock *lastrelease; // xxx debug |