rename splhi/spllo to pushcli/popcli

This commit is contained in:
rsc 2007-09-27 20:09:40 +00:00
parent 39c3fb1b15
commit 3807c1f20b
6 changed files with 22 additions and 22 deletions

4
defs.h
View file

@ -115,8 +115,8 @@ void getcallerpcs(void*, uint*);
int holding(struct spinlock*); int holding(struct spinlock*);
void initlock(struct spinlock*, char*); void initlock(struct spinlock*, char*);
void release(struct spinlock*); void release(struct spinlock*);
void splhi(); void pushcli();
void spllo(); void popcli();
// string.c // string.c
int memcmp(const void*, const void*, uint); int memcmp(const void*, const void*, uint);

6
main.c
View file

@ -18,9 +18,9 @@ main(void)
// clear BSS // clear BSS
memset(edata, 0, end - edata); memset(edata, 0, end - edata);
// splhi() every processor during bootstrap. // pushcli() every processor during bootstrap.
for(i=0; i<NCPU; i++) for(i=0; i<NCPU; i++)
cpus[i].nsplhi = 1; // no interrupts during bootstrap cpus[i].ncli = 1; // no interrupts during bootstrap
mp_init(); // collect info about this machine mp_init(); // collect info about this machine
bcpu = mp_bcpu(); bcpu = mp_bcpu();
@ -63,7 +63,7 @@ mpmain(void)
asm volatile("movl %0, %%ss" :: "r" (SEG_CPUSTACK << 3)); asm volatile("movl %0, %%ss" :: "r" (SEG_CPUSTACK << 3));
cpuid(0, 0, 0, 0, 0); // memory barrier cpuid(0, 0, 0, 0, 0); // memory barrier
cpus[cpu()].booted = 1; cpus[cpu()].booted = 1;
spllo(); popcli();
scheduler(); scheduler();
} }

10
proc.c
View file

@ -71,7 +71,7 @@ setupsegs(struct proc *p)
{ {
struct cpu *c; struct cpu *c;
splhi(); pushcli();
c = &cpus[cpu()]; c = &cpus[cpu()];
c->ts.ss0 = SEG_PROCSTACK << 3; c->ts.ss0 = SEG_PROCSTACK << 3;
if(p) if(p)
@ -97,7 +97,7 @@ setupsegs(struct proc *p)
lgdt(c->gdt, sizeof(c->gdt)); lgdt(c->gdt, sizeof(c->gdt));
ltr(SEG_TSS << 3); ltr(SEG_TSS << 3);
spllo(); popcli();
} }
// Create a new process copying p as the parent. // Create a new process copying p as the parent.
@ -189,9 +189,9 @@ curproc(void)
{ {
struct proc *p; struct proc *p;
splhi(); pushcli();
p = cpus[cpu()].curproc; p = cpus[cpu()].curproc;
spllo(); popcli();
return p; return p;
} }
@ -249,7 +249,7 @@ sched(void)
panic("sched running"); panic("sched running");
if(!holding(&proc_table_lock)) if(!holding(&proc_table_lock))
panic("sched proc_table_lock"); panic("sched proc_table_lock");
if(cpus[cpu()].nsplhi != 1) if(cpus[cpu()].ncli != 1)
panic("sched locks"); panic("sched locks");
swtch(&cp->context, &cpus[cpu()].context); swtch(&cp->context, &cpus[cpu()].context);

2
proc.h
View file

@ -61,7 +61,7 @@ struct cpu {
struct segdesc gdt[NSEGS]; // x86 global descriptor table struct segdesc gdt[NSEGS]; // x86 global descriptor table
char *stack; char *stack;
volatile int booted; // Has the CPU started? volatile int booted; // Has the CPU started?
int nsplhi; // Depth of splhi nesting. int ncli; // Depth of pushcli nesting.
}; };
extern struct cpu cpus[NCPU]; extern struct cpu cpus[NCPU];

View file

@ -25,7 +25,7 @@ initlock(struct spinlock *lock, char *name)
void void
acquire(struct spinlock *lock) acquire(struct spinlock *lock)
{ {
splhi(); pushcli();
if(holding(lock)) if(holding(lock))
panic("acquire"); 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) cpuid(0, 0, 0, 0, 0); // memory barrier (see Ch 7, IA-32 manual vol 3)
lock->locked = 0; lock->locked = 0;
spllo(); popcli();
} }
// Record the current call stack in pcs[] by following the %ebp chain. // Record the current call stack in pcs[] by following the %ebp chain.
@ -93,20 +93,20 @@ holding(struct spinlock *lock)
// Better names? Better functions? // Better names? Better functions?
void void
splhi(void) pushcli(void)
{ {
cli(); cli();
cpus[cpu()].nsplhi++; cpus[cpu()].ncli++;
} }
void void
spllo(void) popcli(void)
{ {
if(read_eflags()&FL_IF) if(read_eflags()&FL_IF)
panic("spllo - interruptible"); panic("popcli - interruptible");
if(--cpus[cpu()].nsplhi < 0) if(--cpus[cpu()].ncli < 0)
panic("spllo"); panic("popcli");
if(cpus[cpu()].nsplhi == 0) if(cpus[cpu()].ncli == 0)
sti(); sti();
} }

4
trap.c
View file

@ -45,7 +45,7 @@ trap(struct trapframe *tf)
} }
// No interrupts during interrupt handling. // No interrupts during interrupt handling.
splhi(); pushcli();
switch(tf->trapno){ switch(tf->trapno){
case IRQ_OFFSET + IRQ_TIMER: case IRQ_OFFSET + IRQ_TIMER:
@ -84,7 +84,7 @@ trap(struct trapframe *tf)
cp->killed = 1; cp->killed = 1;
} }
spllo(); popcli();
// Force process exit if it has been killed and is in user space. // 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 // (If it is still executing in the kernel, let it keep running