Multi-cored process changes
authorBarret Rhoden <brho@cs.berkeley.edu>
Fri, 30 Oct 2009 20:10:44 +0000 (13:10 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Sat, 31 Oct 2009 01:02:31 +0000 (18:02 -0700)
commit9c04fc08544bb0fe1ca61b85f160e2d3e5b51766
treea3e2bd9fc3c1a2d59a57ea17a0e35322f18ec339
parentb8c69c9658fc8844f1dd595445a052d205b1aafb
Multi-cored process changes

Changes how yielding works and made transitions to and from _M states
more explicit.  Vcore0 can yield and come back up at the hart entry (you
need to prepare_for_multi_mode()).  In general, all cores are equal when
in an _M state, and vcore0 continues running the calling context only on
transition from _S to _M, and not whenever proc_run()ing a RUNNABLE_M.

Added documentation about how processes work, mostly with respect to
the kernel interface.  Part 2 has specific info about the transitions to
and from _M.

Finally moved current to per_cpu_info, and also added current_tf.
Current is still a pointer to the process that is on the core.
Current_tf is a pointer to the trapframe that is on the core's kernel
stack.  This is also stored in per_cpu_info.  It could be discovered
through arcane hackery, but probably isn't worth it.
30 files changed:
.gitignore
Documentation/doxygen/doc/img/nanwan.png [new file with mode: 0644]
Documentation/doxygen/doc/include/annots.h [new file with mode: 0644]
Documentation/doxygen/doc/rosdoc.cfg [new file with mode: 0644]
Documentation/doxygen/doc/rosdoc.main [new file with mode: 0644]
Documentation/processes.txt [new file with mode: 0644]
doc/img/nanwan.png [deleted file]
doc/include/annots.h [deleted file]
doc/rosdoc.cfg [deleted file]
doc/rosdoc.main [deleted file]
kern/arch/i386/ioapic.c
kern/arch/i386/smp_boot.c
kern/arch/i386/trap.c
kern/arch/sparc/cpuinfo.c
kern/arch/sparc/trap.c
kern/include/env.h
kern/include/process.h
kern/include/smp.h
kern/include/syscall.h
kern/src/env.c
kern/src/manager.c
kern/src/process.c
kern/src/resource.c
kern/src/schedule.c
kern/src/syscall.c
user/apps/roslib/mhello.c
user/apps/roslib/mproctests.c
user/roslib/inc/lib.h
user/roslib/src/i386/entry.S
user/roslib/src/libmain.c