xref: /qemu/include/system/cpu-timers.h (revision 161f5bc8e965fa8255db435683e6b52042037bb7)
1740b1759SClaudio Fontana /*
2740b1759SClaudio Fontana  * CPU timers state API
3740b1759SClaudio Fontana  *
4740b1759SClaudio Fontana  * Copyright 2020 SUSE LLC
5740b1759SClaudio Fontana  *
6740b1759SClaudio Fontana  * This work is licensed under the terms of the GNU GPL, version 2 or later.
7740b1759SClaudio Fontana  * See the COPYING file in the top-level directory.
8740b1759SClaudio Fontana  *
9740b1759SClaudio Fontana  */
10*32cad1ffSPhilippe Mathieu-Daudé #ifndef SYSTEM_CPU_TIMERS_H
11*32cad1ffSPhilippe Mathieu-Daudé #define SYSTEM_CPU_TIMERS_H
12740b1759SClaudio Fontana 
13740b1759SClaudio Fontana #include "qemu/timer.h"
14740b1759SClaudio Fontana 
15740b1759SClaudio Fontana /* init the whole cpu timers API, including icount, ticks, and cpu_throttle */
16740b1759SClaudio Fontana void cpu_timers_init(void);
17740b1759SClaudio Fontana 
18740b1759SClaudio Fontana /*
19740b1759SClaudio Fontana  * CPU Ticks and Clock
20740b1759SClaudio Fontana  */
21740b1759SClaudio Fontana 
22740b1759SClaudio Fontana /* Caller must hold BQL */
23740b1759SClaudio Fontana void cpu_enable_ticks(void);
24740b1759SClaudio Fontana /* Caller must hold BQL */
25740b1759SClaudio Fontana void cpu_disable_ticks(void);
26740b1759SClaudio Fontana 
27740b1759SClaudio Fontana /*
28430065daSClaudio Fontana  * return the time elapsed in VM between vm_start and vm_stop.
29430065daSClaudio Fontana  * cpu_get_ticks() uses units of the host CPU cycle counter.
30740b1759SClaudio Fontana  */
31740b1759SClaudio Fontana int64_t cpu_get_ticks(void);
32740b1759SClaudio Fontana 
33740b1759SClaudio Fontana /*
34740b1759SClaudio Fontana  * Returns the monotonic time elapsed in VM, i.e.,
35740b1759SClaudio Fontana  * the time between vm_start and vm_stop
36740b1759SClaudio Fontana  */
37740b1759SClaudio Fontana int64_t cpu_get_clock(void);
38740b1759SClaudio Fontana 
39740b1759SClaudio Fontana void qemu_timer_notify_cb(void *opaque, QEMUClockType type);
40740b1759SClaudio Fontana 
41113ac1d2SAlex Bennée /* get/set VIRTUAL clock and VM elapsed ticks via the cpus accel interface */
42430065daSClaudio Fontana int64_t cpus_get_virtual_clock(void);
43113ac1d2SAlex Bennée void cpus_set_virtual_clock(int64_t new_time);
44430065daSClaudio Fontana int64_t cpus_get_elapsed_ticks(void);
45430065daSClaudio Fontana 
46*32cad1ffSPhilippe Mathieu-Daudé #endif /* SYSTEM_CPU_TIMERS_H */
47