提交 3807c1f2 创建 作者: rsc's avatar rsc

rename splhi/spllo to pushcli/popcli

上级 39c3fb1b
......@@ -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);
......
......@@ -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; 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
bcpu = mp_bcpu();
......@@ -63,7 +63,7 @@ mpmain(void)
asm volatile("movl %0, %%ss" :: "r" (SEG_CPUSTACK << 3));
cpuid(0, 0, 0, 0, 0); // memory barrier
cpus[cpu()].booted = 1;
spllo();
popcli();
scheduler();
}
......
......@@ -71,7 +71,7 @@ setupsegs(struct proc *p)
{
struct cpu *c;
splhi();
pushcli();
c = &cpus[cpu()];
c->ts.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);
......
......@@ -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];
......
......@@ -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();
}
......@@ -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
......
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论