diff options
| author | Robert Morris <rtm@csail.mit.edu> | 2019-06-05 14:14:57 -0400 | 
|---|---|---|
| committer | Robert Morris <rtm@csail.mit.edu> | 2019-06-05 14:14:57 -0400 | 
| commit | 5eb1cb49722cce9afee48886a8db138d5f58d0ff (patch) | |
| tree | ee8c81e5b3fdfc75e154e23687f53fcb50158617 | |
| parent | 31136437684b5987ef46f4c6947940cf96de75b3 (diff) | |
| download | xv6-labs-5eb1cb49722cce9afee48886a8db138d5f58d0ff.tar.gz xv6-labs-5eb1cb49722cce9afee48886a8db138d5f58d0ff.tar.bz2 xv6-labs-5eb1cb49722cce9afee48886a8db138d5f58d0ff.zip | |
push_off() and pop_off() in myproc()
| -rw-r--r-- | console.c | 3 | ||||
| -rw-r--r-- | proc.c | 10 | 
2 files changed, 9 insertions, 4 deletions
| @@ -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"); @@ -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; | 
