push_off() and pop_off() in myproc()
This commit is contained in:
parent
3113643768
commit
5eb1cb4972
|
@ -17,7 +17,7 @@
|
|||
|
||||
static void consputc(int);
|
||||
|
||||
static int panicked = 0;
|
||||
static volatile int panicked = 0;
|
||||
|
||||
static struct {
|
||||
struct spinlock lock;
|
||||
|
@ -120,6 +120,7 @@ printf(char *fmt, ...)
|
|||
void
|
||||
panic(char *s)
|
||||
{
|
||||
cons.locking = 0;
|
||||
printf("panic: ");
|
||||
printf(s);
|
||||
printf("\n");
|
||||
|
|
10
proc.c
10
proc.c
|
@ -11,7 +11,6 @@ struct {
|
|||
struct proc proc[NPROC];
|
||||
} ptable;
|
||||
|
||||
// XXX riscv move somewhere else
|
||||
struct cpu cpus[NCPU];
|
||||
|
||||
struct proc *initproc;
|
||||
|
@ -54,10 +53,10 @@ mycpu(void) {
|
|||
// Return the current struct proc *.
|
||||
struct proc*
|
||||
myproc(void) {
|
||||
// XXX push intr off
|
||||
push_off();
|
||||
struct cpu *c = mycpu();
|
||||
struct proc *p = c->proc;
|
||||
// XXX pop intr
|
||||
pop_off();
|
||||
return p;
|
||||
}
|
||||
|
||||
|
@ -403,8 +402,13 @@ sched(void)
|
|||
|
||||
if(!holding(&ptable.lock))
|
||||
panic("sched ptable.lock");
|
||||
if(mycpu()->noff != 1)
|
||||
panic("sched locks");
|
||||
if(p->state == RUNNING)
|
||||
panic("sched running");
|
||||
if(intr_get())
|
||||
panic("sched interruptible");
|
||||
|
||||
intena = mycpu()->intena;
|
||||
swtch(&p->context, &mycpu()->scheduler);
|
||||
mycpu()->intena = intena;
|
||||
|
|
Loading…
Reference in a new issue