profiling: simple test
[akaros.git] / tests / prof_test.c
1 /* Copyright (c) 2013 The Regents of the University of California
2  * Barret Rhoden <brho@cs.berkeley.edu>
3  * See LICENSE for details.
4  *
5  * lock_test: microbenchmark to measure different styles of spinlocks. */
6
7 #include <stdio.h>
8 #include <pthread.h>
9 #include <stdlib.h>
10 #include <unistd.h>
11 #include <sys/time.h>
12 #include <math.h>
13 #include <argp.h>
14
15 #include <tsc-compat.h>
16 #include <measure.h>
17
18 /* OS dependent #incs */
19 #include <parlib.h>
20 #include <vcore.h>
21 #include <timing.h>
22 #include <spinlock.h>
23 #include <mcs.h>
24 #include <arch/arch.h>
25 #include <event.h>
26
27 int main(int argc, char** argv)
28 {
29         volatile int i;
30         uint64_t ns;
31
32         uint64_t resume, total;
33         resume = __procinfo.vcoremap[vcore_id()].resume;
34         total = __procinfo.vcoremap[vcore_id()].total;
35         for(i = 0; i < 1048576*1024; i++)
36                 ;
37         ns = tsc2nsec(read_tsc());
38         printf("resume %p total %p ns %p\n", resume, total, ns);
39         resume = __procinfo.vcoremap[vcore_id()].resume;
40         total = __procinfo.vcoremap[vcore_id()].total;
41         ns = tsc2nsec(read_tsc());
42         printf("resume %p total %p ns %p\n", resume, total, ns);
43         resume = __procinfo.vcoremap[vcore_id()].resume;
44         total = __procinfo.vcoremap[vcore_id()].total;
45         for(i = 0; i < 1048576*1024; i++)
46                 ;
47         ns = tsc2nsec(read_tsc());
48         printf("resume %p total %p ns %p\n", resume, total, ns);
49 }