Kernel alarms pass the alarm ID
[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 <stdio.h>
7 #include <vcore.h>
8 #include <arch/arch.h>
9 #include <event.h>
10 #include <uthread.h>
11
12 int main(int argc, char** argv)
13 {
14         /* Get EV_ALARM on vcore 1, with IPI. */
15         enable_kevent(EV_ALARM, 1, EVENT_IPI | EVENT_VCORE_PRIVATE);
16
17         vcore_request(max_vcores());
18
19         /* should never make it here */
20         return -1;
21 }
22
23 void vcore_entry(void)
24 {
25         struct preempt_data *vcpd = &__procdata.vcore_preempt_data[0];
26         vcpd->notif_disabled = FALSE;
27
28         unsigned int ev_type = get_event_type(&vcpd->ev_mbox_private);
29         if (ev_type == EV_ALARM)
30                 printf("[T]:009:E:%llu\n", read_tsc());
31         while(1);
32 }
33