cfd766945ce67921e4cfba2854b5b558f63d39fa
[akaros.git] / user / benchutil / include / pvcalarm.h
1 /* Copyright (c) 2014 The Regents of the University of California
2  * Kevin Klues <klueska@cs.berkeley.edu>
3  * See LICENSE for details. */
4
5 #ifndef _PVCALARM_H
6 #define _PVCALARM_H
7
8 #include <stdint.h>
9
10 /* Types of per-vcore alarms that can be set */
11 enum {
12         /* This is a real-time alarm that does not take into account time that a
13          * vcore spends offline not doing work. It is like the posix ITIMER_REAL
14          * but for vcores. */
15         PVCALARM_REAL,
16         /* This is a profiling alarm that only accounts for time that a vcore
17          * spends online doing useful work. It is like the posix ITIMER_PROF but
18          * for vcores. */
19         PVCALARM_PROF
20 };
21
22 /* Enable the per-vcore calarm service according to one of the policies listed
23  * above.  Every interval usecs the provided callback will be called on each
24  * active vcore according to that policy. */
25 int enable_pvcalarms(int policy, uint64_t interval, void (*callback) (void));
26
27 /* Disable the currently active per-vcore alarm service */
28 int disable_pvcalarms();
29
30 #endif // _PVCALARM_H