]> git.proxmox.com Git - qemu.git/blame - qemu-timer.h
qcow2: Bring synchronous read/write back to life
[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);
27
28extern int64_t ticks_per_sec;
29
30void qemu_get_timer(QEMUFile *f, QEMUTimer *ts);
31void qemu_put_timer(QEMUFile *f, QEMUTimer *ts);
32
33/* ptimer.c */
34typedef struct ptimer_state ptimer_state;
35typedef void (*ptimer_cb)(void *opaque);
36
37ptimer_state *ptimer_init(QEMUBH *bh);
38void ptimer_set_period(ptimer_state *s, int64_t period);
39void ptimer_set_freq(ptimer_state *s, uint32_t freq);
40void ptimer_set_limit(ptimer_state *s, uint64_t limit, int reload);
41uint64_t ptimer_get_count(ptimer_state *s);
42void ptimer_set_count(ptimer_state *s, uint64_t count);
43void ptimer_run(ptimer_state *s, int oneshot);
44void ptimer_stop(ptimer_state *s);
45void qemu_put_ptimer(QEMUFile *f, ptimer_state *s);
46void qemu_get_ptimer(QEMUFile *f, ptimer_state *s);
47
48#endif