UCQ debug code
[akaros.git] / tests / msr_nice_while.c
index 0556f29..7f76718 100644 (file)
@@ -4,11 +4,12 @@
  * userthread.  The pthread code will nicely yield if it detects an incoming
  * preemption. */
 
-#include <ros/notification.h>
 #include <stdlib.h>
 #include <vcore.h>
 #include <pthread.h>
 #include <rassert.h>
+#include <event.h>
+#include <uthread.h>
 
 void *while_thread(void *arg)
 {
@@ -19,10 +20,12 @@ int main(int argc, char** argv)
 {
        pthread_t *my_threads = malloc(sizeof(pthread_t) * max_vcores());
 
-       /* set up to receive the PREEMPT_PENDING notif */
-       struct notif_method *nm;
-       nm = &__procdata.notif_methods[NE_PREEMPT_PENDING];
-       nm->flags |= NOTIF_WANTED | NOTIF_IPI;
+       /* set up to receive the PREEMPT_PENDING event.  EVENT_VCORE_APPRO tells the
+        * kernel to send the msg to whichever vcore is appropriate.  Pthread code
+        * will see the preemption and yield. */
+       struct event_queue *ev_q = get_event_q();
+       ev_q->ev_flags = EVENT_IPI | EVENT_NOMSG | EVENT_VCORE_APPRO;
+       register_kevent_q(ev_q, EV_PREEMPT_PENDING);
 
        /* actually only need one less, since the _S will be pthread 0 */
        for (int i = 0; i < max_vcores() - 1; i++)