Skip to content
Snippets Groups Projects
Commit 66432474 authored by rtm's avatar rtm
Browse files

cvs add spinlock.h

fix race in schedule()
parent 4e8f237b
No related branches found
No related tags found
No related merge requests found
......@@ -126,3 +126,10 @@ in general, the table locks protect both free-ness and
why can't i get a lock in console code?
always triple fault
lock code shouldn't call cprintf...
ide_init doesn't work now?
and IOAPIC: read from unsupported address
when running pre-empt user test
so maybe something wrong with clock interrupts
no! if one cpu holds lock w/ curproc0=,
then another cpu can take it, it looks like
a recursive acquire()
......@@ -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;
......
struct spinlock {
unsigned int locked;
struct proc *p;
int count;
unsigned locker_pc;
};
......@@ -93,8 +93,8 @@ preempt()
main()
{
puts("usertests starting\n");
pipe1();
//preempt();
//pipe1();
preempt();
while(1)
;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment