From 5be0039ce9e22f140a29e167526c64c723c5be3c Mon Sep 17 00:00:00 2001 From: rtm Date: Thu, 10 Aug 2006 22:08:14 +0000 Subject: interrupts could be recursive since lapic_eoi() called before rti so fast interrupts overflow the kernel stack fix: cli() before lapic_eoi() --- proc.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'proc.h') diff --git a/proc.h b/proc.h index c6f5be6..6ed2e78 100644 --- a/proc.h +++ b/proc.h @@ -41,8 +41,6 @@ struct proc{ uint sz; // total size of mem, including kernel stack char *kstack; // kernel stack, separate from mem so it doesn't move enum proc_state state; - enum proc_state newstate; // desired state after swtch() - struct spinlock *mtx; // mutex for condition variable int pid; int ppid; void *chan; // sleep @@ -68,7 +66,9 @@ extern struct proc *curproc[NCPU]; // can be NULL if no proc running. struct cpu { uchar apicid; // Local APIC ID struct jmpbuf jmpbuf; + int guard1; char mpstack[MPSTACK]; // per-cpu start-up stack + int guard2; volatile int booted; int nlock; // # of locks currently held struct spinlock *lastacquire; // xxx debug -- cgit v1.2.3