Procdata uses user_contexts (XCC)
[akaros.git] / tests / msr_dumb_while.c
index b05706f..0f965b5 100644 (file)
@@ -3,34 +3,16 @@
  * This requests the max_vcores in the system, then just dumbly while loops.
  * If you send it an NE_ALARM, it'll print its TSC. */
 
-#include <rstdio.h>
+#include <stdio.h>
 #include <vcore.h>
 #include <arch/arch.h>
 #include <event.h>
-
-void ghetto_vcore_entry(void);
-struct schedule_ops ghetto_sched_ops = {
-       0, /* init, */
-       ghetto_vcore_entry,
-       0, /* thread_create, */
-       0, /* thread_runnable, */
-       0, /* thread_yield, */
-       0, /* thread_exit, */
-       0, /* preempt_pending, */
-       0, /* spawn_thread, */
-};
-struct schedule_ops *sched_ops = &ghetto_sched_ops;
+#include <uthread.h>
 
 int main(int argc, char** argv)
 {
-
-       /* don't forget to enable notifs on vcore0.  if you don't, the kernel will
-        * restart your _S with notifs disabled, which is a path to confusion. */
-       struct preempt_data *vcpd = &__procdata.vcore_preempt_data[0];
-       vcpd->notif_enabled = TRUE;
-
        /* Get EV_ALARM on vcore 1, with IPI. */
-       enable_kevent(EV_ALARM, 1, EVENT_IPI);
+       enable_kevent(EV_ALARM, 1, EVENT_IPI | EVENT_VCORE_PRIVATE);
 
        vcore_request(max_vcores());
 
@@ -38,12 +20,12 @@ int main(int argc, char** argv)
        return -1;
 }
 
-void ghetto_vcore_entry(void)
+void vcore_entry(void)
 {
        struct preempt_data *vcpd = &__procdata.vcore_preempt_data[0];
-       vcpd->notif_enabled = TRUE;
+       vcpd->notif_disabled = FALSE;
 
-       unsigned int ev_type = get_event_type(&vcpd->ev_mbox);
+       unsigned int ev_type = get_event_type(&vcpd->ev_mbox_private);
        if (ev_type == EV_ALARM)
                printf("[T]:009:E:%llu\n", read_tsc());
        while(1);