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