e2b5e3ff34315eb93110814e5a3487b4683eed10
[akaros.git] / tests / mhello.c
1 #include <parlib.h>
2 #include <ros/mman.h>
3 #include <ros/resource.h>
4 #include <stdio.h>
5 #include <hart.h>
6
7 hart_barrier_t b;
8
9 __thread int temp;
10
11 int main(int argc, char** argv)
12 {
13         uint32_t vcoreid;
14         int retval;
15
16         hart_barrier_init(&b,hart_max_harts()-1);
17
18         if ((vcoreid = hart_self())) {
19                 printf("Should never see me! (from vcore %d)\n", vcoreid);
20         } else { // core 0
21                 temp = 0xdeadbeef;
22                 printf("Hello from vcore %d with temp addr = %p and temp = %p\n",
23                        vcoreid, &temp, temp);
24                 printf("Multi-Goodbye, world, from PID: %d!\n", sys_getpid());
25                 //retval = sys_resource_req(RES_CORES, 2, 0);
26                 retval = hart_request(hart_max_harts()-2);
27                 //debug("retval = %d\n", retval);
28         }
29         printf("Vcore %d Done!\n", vcoreid);
30
31         hart_barrier_wait(&b,hart_self());
32
33         printf("All Cores Done!\n", vcoreid);
34         return 0;
35 }
36
37 void hart_entry(void)
38 {
39         uint32_t vcoreid = hart_self();
40         temp = 0xcafebabe;
41         printf("Hello from hart_entry in vcore %d with temp addr %p and temp %p\n",
42                vcoreid, &temp, temp);
43         hart_barrier_wait(&b,hart_self());
44         while(1);
45 }