diff --git a/defs.h b/defs.h index 4d2cba9..beb48fe 100644 --- a/defs.h +++ b/defs.h @@ -115,8 +115,8 @@ void getcallerpcs(void*, uint*); int holding(struct spinlock*); void initlock(struct spinlock*, char*); void release(struct spinlock*); -void splhi(); -void spllo(); +void pushcli(); +void popcli(); // string.c int memcmp(const void*, const void*, uint); diff --git a/main.c b/main.c index 4176e6c..464112b 100644 --- a/main.c +++ b/main.c @@ -18,9 +18,9 @@ main(void) // clear BSS memset(edata, 0, end - edata); - // splhi() every processor during bootstrap. + // pushcli() every processor during bootstrap. for(i=0; its.ss0 = SEG_PROCSTACK << 3; if(p) @@ -97,7 +97,7 @@ setupsegs(struct proc *p) lgdt(c->gdt, sizeof(c->gdt)); ltr(SEG_TSS << 3); - spllo(); + popcli(); } // Create a new process copying p as the parent. @@ -189,9 +189,9 @@ curproc(void) { struct proc *p; - splhi(); + pushcli(); p = cpus[cpu()].curproc; - spllo(); + popcli(); return p; } @@ -249,7 +249,7 @@ sched(void) panic("sched running"); if(!holding(&proc_table_lock)) panic("sched proc_table_lock"); - if(cpus[cpu()].nsplhi != 1) + if(cpus[cpu()].ncli != 1) panic("sched locks"); swtch(&cp->context, &cpus[cpu()].context); diff --git a/proc.h b/proc.h index 285f6bf..2063baa 100644 --- a/proc.h +++ b/proc.h @@ -61,7 +61,7 @@ struct cpu { struct segdesc gdt[NSEGS]; // x86 global descriptor table char *stack; volatile int booted; // Has the CPU started? - int nsplhi; // Depth of splhi nesting. + int ncli; // Depth of pushcli nesting. }; extern struct cpu cpus[NCPU]; diff --git a/spinlock.c b/spinlock.c index 61ae093..bf02292 100644 --- a/spinlock.c +++ b/spinlock.c @@ -25,7 +25,7 @@ initlock(struct spinlock *lock, char *name) void acquire(struct spinlock *lock) { - splhi(); + pushcli(); if(holding(lock)) panic("acquire"); @@ -59,7 +59,7 @@ release(struct spinlock *lock) cpuid(0, 0, 0, 0, 0); // memory barrier (see Ch 7, IA-32 manual vol 3) lock->locked = 0; - spllo(); + popcli(); } // Record the current call stack in pcs[] by following the %ebp chain. @@ -93,20 +93,20 @@ holding(struct spinlock *lock) // Better names? Better functions? void -splhi(void) +pushcli(void) { cli(); - cpus[cpu()].nsplhi++; + cpus[cpu()].ncli++; } void -spllo(void) +popcli(void) { if(read_eflags()&FL_IF) - panic("spllo - interruptible"); - if(--cpus[cpu()].nsplhi < 0) - panic("spllo"); - if(cpus[cpu()].nsplhi == 0) + panic("popcli - interruptible"); + if(--cpus[cpu()].ncli < 0) + panic("popcli"); + if(cpus[cpu()].ncli == 0) sti(); } diff --git a/trap.c b/trap.c index 7ef32ff..0acc94b 100644 --- a/trap.c +++ b/trap.c @@ -45,7 +45,7 @@ trap(struct trapframe *tf) } // No interrupts during interrupt handling. - splhi(); + pushcli(); switch(tf->trapno){ case IRQ_OFFSET + IRQ_TIMER: @@ -84,7 +84,7 @@ trap(struct trapframe *tf) cp->killed = 1; } - spllo(); + popcli(); // Force process exit if it has been killed and is in user space. // (If it is still executing in the kernel, let it keep running