sys_change_vcore() (XCC)
[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
15         /* don't forget to enable notifs on vcore0.  if you don't, the kernel will
16          * restart your _S with notifs disabled, which is a path to confusion. */
17         struct preempt_data *vcpd = &__procdata.vcore_preempt_data[0];
18         vcpd->notif_enabled = TRUE;
19
20         /* Get EV_ALARM on vcore 1, with IPI. */
21         enable_kevent(EV_ALARM, 1, EVENT_IPI);
22
23         vcore_request(max_vcores());
24
25         /* should never make it here */
26         return -1;
27 }
28
29 void vcore_entry(void)
30 {
31         struct preempt_data *vcpd = &__procdata.vcore_preempt_data[0];
32         vcpd->notif_enabled = TRUE;
33
34         unsigned int ev_type = get_event_type(&vcpd->ev_mbox);
35         if (ev_type == EV_ALARM)
36                 printf("[T]:009:E:%llu\n", read_tsc());
37         while(1);
38 }
39