Add a 2LS for VMMs
[akaros.git] / tests / mcp_halt.c
index 809f5af..4231581 100644 (file)
@@ -6,10 +6,11 @@
 #include <ros/bcq.h>
 #include <parlib/arch/arch.h>
 #include <stdio.h>
+#include <stdlib.h>
 #include <parlib/vcore.h>
 #include <parlib/mcs.h>
 #include <parlib/timing.h>
-#include <parlib/rassert.h>
+#include <parlib/assert.h>
 #include <parlib/event.h>
 #include <parlib/uthread.h>
 
@@ -18,7 +19,6 @@ void ghetto_vcore_entry(void);
 struct schedule_ops ghetto_sched_ops = {
        .sched_entry = ghetto_vcore_entry,
 };
-struct schedule_ops *sched_ops = &ghetto_sched_ops;
 
 /* All MCP syscalls will spin instead of blocking */
 static void __ros_syscall_spinon(struct syscall *sysc)
@@ -40,14 +40,15 @@ int main(int argc, char** argv)
        /* Inits a thread for us, though we won't use it.  Just a hack to get into
         * _M mode.  Note this requests one vcore for us */
        struct uthread dummy = {0};
-       uthread_lib_init(&dummy);
+       uthread_2ls_init(&dummy, &ghetto_sched_ops);
+       uthread_mcp_init();
 
        /* Reset the blockon to be the spinner...  This is really shitty.  Any
         * blocking calls after we become an MCP and before this will fail.  This is
         * just mhello showing its warts due to trying to work outside uthread.c */
        ros_syscall_blockon = __ros_syscall_spinon;
 
-       vcore_request(nr_vcores - 1); /* since we already have 1 */
+       vcore_request_total(nr_vcores);
 
        while (1)
                sys_halt_core(0);