]> git.proxmox.com Git - qemu.git/blame - qemu-timer.h
refactor kqemu selection for both mingw32
[qemu.git] / qemu-timer.h
CommitLineData
87ecb68b
PB
1#ifndef QEMU_TIMER_H
2#define QEMU_TIMER_H
3
4/* timers */
5
6typedef struct QEMUClock QEMUClock;
7typedef void QEMUTimerCB(void *opaque);
8
9/* The real time clock should be used only for stuff which does not
10 change the virtual machine state, as it is run even if the virtual
11 machine is stopped. The real time clock has a frequency of 1000
12 Hz. */
13extern QEMUClock *rt_clock;
14
15/* The virtual clock is only run during the emulation. It is stopped
16 when the virtual machine is stopped. Virtual timers use a high
17 precision clock, usually cpu cycles (use ticks_per_sec). */
18extern QEMUClock *vm_clock;
19
20int64_t qemu_get_clock(QEMUClock *clock);
21
22QEMUTimer *qemu_new_timer(QEMUClock *clock, QEMUTimerCB *cb, void *opaque);
23void qemu_free_timer(QEMUTimer *ts);
24void qemu_del_timer(QEMUTimer *ts);
25void qemu_mod_timer(QEMUTimer *ts, int64_t expire_time);
26int qemu_timer_pending(QEMUTimer *ts);
2430ffe4 27int qemu_timer_expired(QEMUTimer *timer_head, int64_t current_time);
87ecb68b
PB
28
29extern int64_t ticks_per_sec;
30
31void qemu_get_timer(QEMUFile *f, QEMUTimer *ts);
32void qemu_put_timer(QEMUFile *f, QEMUTimer *ts);
33
34/* ptimer.c */
35typedef struct ptimer_state ptimer_state;
36typedef void (*ptimer_cb)(void *opaque);
37
38ptimer_state *ptimer_init(QEMUBH *bh);
39void ptimer_set_period(ptimer_state *s, int64_t period);
40void ptimer_set_freq(ptimer_state *s, uint32_t freq);
41void ptimer_set_limit(ptimer_state *s, uint64_t limit, int reload);
42uint64_t ptimer_get_count(ptimer_state *s);
43void ptimer_set_count(ptimer_state *s, uint64_t count);
44void ptimer_run(ptimer_state *s, int oneshot);
45void ptimer_stop(ptimer_state *s);
46void qemu_put_ptimer(QEMUFile *f, ptimer_state *s);
47void qemu_get_ptimer(QEMUFile *f, ptimer_state *s);
48
49#endif