proc_run() handles kmsgs before running
authorBarret Rhoden <brho@cs.berkeley.edu>
Wed, 27 Oct 2010 00:32:45 +0000 (17:32 -0700)
committerKevin Klues <klueska@cs.berkeley.edu>
Thu, 3 Nov 2011 00:35:56 +0000 (17:35 -0700)
commit52ac2bef87adcc3b3543b357cfca1e6ae33bdb16
treee30108cf0b265343dad9c9d441dedc5028541a3a
parentc0251e4b62ecb55c6d95c5c8f0711cb61f3409e7
proc_run() handles kmsgs before running

There was a race where we would miss the message (present since we made
the proc_lock a non-irqsave lock), though we never had the messages til
now that could cause the issue.  So proc_run() calls restartcore now.

A necessary part of the change is that process_routine_kmsg() takes a
tf, which is the user TF you want the kernel to pass to the kernel
message (*p->env_tf for proc_run's case).

Also note that the system probably isn't ready yet to overlap proc
management messages (like __death()) with a __launch_kthread() (which
tries to schedule the current process).
kern/arch/i686/trap.c
kern/arch/sparc/trap.c
kern/include/trap.h
kern/src/manager.c
kern/src/process.c
kern/src/smp.c