diff options
author | rtm <rtm> | 2006-07-12 09:10:25 +0000 |
---|---|---|
committer | rtm <rtm> | 2006-07-12 09:10:25 +0000 |
commit | 664324745e2257289f7a61e43892ce6e8b8ed9b7 (patch) | |
tree | 63a538ce874736cb262b83f7358157cfcc99d034 /proc.c | |
parent | 4e8f237be819424f922399f8d121d9867b675541 (diff) | |
download | xv6-labs-664324745e2257289f7a61e43892ce6e8b8ed9b7.tar.gz xv6-labs-664324745e2257289f7a61e43892ce6e8b8ed9b7.tar.bz2 xv6-labs-664324745e2257289f7a61e43892ce6e8b8ed9b7.zip |
cvs add spinlock.h
fix race in schedule()
Diffstat (limited to 'proc.c')
-rw-r--r-- | proc.c | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -148,7 +148,6 @@ scheduler(void) if(i < NPROC){ np->state = RUNNING; - release(&proc_table_lock); break; } @@ -159,6 +158,8 @@ scheduler(void) cpus[cpu()].lastproc = np; curproc[cpu()] = np; + release(&proc_table_lock); + // h/w sets busy bit in TSS descriptor sometimes, and faults // if it's set in LTR. so clear tss descriptor busy bit. np->gdt[SEG_TSS].sd_type = STS_T32A; |