Event helpers for userspace
[akaros.git] / tests / msr_dumb_while.c
1 /* tests/msr_dumb_while.c
2  *
3  * This requests the max_vcores in the system, then just dumbly while loops.
4  * If you send it an NE_ALARM, it'll print its TSC. */
5
6 #include <rstdio.h>
7 #include <vcore.h>
8 #include <arch/arch.h>
9 #include <event.h>
10
11 int main(int argc, char** argv)
12 {
13
14         /* don't forget to enable notifs on vcore0.  if you don't, the kernel will
15          * restart your _S with notifs disabled, which is a path to confusion. */
16         struct preempt_data *vcpd = &__procdata.vcore_preempt_data[0];
17         vcpd->notif_enabled = TRUE;
18
19         /* Get EV_ALARM on vcore 1, with IPI. */
20         enable_kevent(EV_ALARM, 1, EVENT_IPI);
21
22         vcore_request(max_vcores());
23
24         /* should never make it here */
25         return -1;
26 }
27
28 void vcore_entry(void)
29 {
30         struct preempt_data *vcpd = &__procdata.vcore_preempt_data[0];
31         vcpd->notif_enabled = TRUE;
32
33         unsigned int ev_type = get_event_type(&vcpd->ev_mbox);
34         if (ev_type == EV_ALARM)
35                 printf("[T]:009:E:%llu\n", read_tsc());
36         while(1);
37 }
38