rename splhi/spllo to pushcli/popcli
This commit is contained in:
parent
39c3fb1b15
commit
3807c1f20b
6 changed files with 22 additions and 22 deletions
4
defs.h
4
defs.h
|
@ -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
6
main.c
|
@ -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
10
proc.c
|
@ -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
2
proc.h
|
@ -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];
|
||||||
|
|
18
spinlock.c
18
spinlock.c
|
@ -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
4
trap.c
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue