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