Add a 2LS for VMMs
authorBarret Rhoden <brho@cs.berkeley.edu>
Wed, 27 Apr 2016 22:14:24 +0000 (18:14 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Mon, 2 May 2016 21:11:15 +0000 (17:11 -0400)
commit460c652105e6628fdebc994eb1f254dd9b1b019f
treee5f7211d7eae463c540a4daf12ae1018b9c58390
parent465a616319406066625fae45854d2aa7e3260843
Add a 2LS for VMMs

We now have a basic 2LS for VMMs.  It doesn't handle preemption or other
serious issues, but it does the basics.  Specifically, it supports
vmrunkernel, which is no longer a pthread-based app.

You can control whether vmrunkernel is an SCP or an MCP, as well as whether
or not it yields, with the parlib_ control variables.  We can provide
arguments to vmrunkernel for that later.

Ancillary changes:
- virtio uses the VMM 2LS, instead of pthreads
- renamed the apic() function (too generic)
- the vmexit switch code was moved out of vmrunkernel and refactored.  It
  should be easier to follow.  In the process, I removed the empty apic()
case and the unused interrupt-window case.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
tests/vmm/vmrunkernel.c
user/vmm/apic.c
user/vmm/include/vmm/sched.h
user/vmm/include/vmm/virtio_mmio.h
user/vmm/include/vmm/vmm.h
user/vmm/sched.c [new file with mode: 0644]
user/vmm/virtio-mmio.c
user/vmm/vmexit.c [new file with mode: 0644]