diff options
| -rw-r--r-- | proc.c | 7 | ||||
| -rw-r--r-- | spinlock.c | 3 | 
2 files changed, 8 insertions, 2 deletions
| @@ -302,7 +302,12 @@ scheduler(void)  }  // Enter scheduler.  Must hold only ptable.lock -// and have changed proc->state. +// and have changed proc->state. Saves and restores +// intena because intena is a property of this +// kernel thread, not this CPU. It should +// be proc->intena and proc->ncli, but that would +// break in the few places where a lock is held but +// there's no process.  void  sched(void)  { @@ -102,8 +102,9 @@ pushcli(void)    eflags = readeflags();    cli(); -  if(cpu->ncli++ == 0) +  if(cpu->ncli == 0)      cpu->intena = eflags & FL_IF; +  cpu->ncli += 1;  }  void | 
