Make arsc and local async calls use the same structure.
[akaros.git] / tests / manycore_test.c
1 #include <rstdio.h>
2 #include <assert.h>
3 #include <vcore.h>
4 #include <parlib.h>
5 #include <mcs.h>
6 #include <uthread.h>
7
8 mcs_barrier_t b;
9
10 void do_work_son(int vcoreid)
11 {
12         int cpuid = sys_getcpuid();
13         int pid = sys_getpid();
14         printf("Hello! My Process ID: %d My VCoreID: %d My CPU: %d\n", pid, vcoreid, cpuid);
15         mcs_barrier_wait(&b,vcoreid);
16 }
17
18 void vcore_entry()
19 {
20         assert(vcore_id() > 0);
21         do_work_son(vcore_id());
22 }
23
24 int main(int argc, char** argv)
25 {
26         assert(vcore_id() == 0);
27         mcs_barrier_init(&b,max_vcores());
28         vcore_request(max_vcores()-1);
29         do_work_son(0);
30         return 0;
31 }