]> git.proxmox.com Git - mirror_qemu.git/blame - qemu-timer.h
Make get_ticks_per_sec() a static inline
[mirror_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 28
274dfed8
AL
29static inline int64_t get_ticks_per_sec(void)
30{
31 return 1000000000LL;
32}
87ecb68b
PB
33
34void qemu_get_timer(QEMUFile *f, QEMUTimer *ts);
35void qemu_put_timer(QEMUFile *f, QEMUTimer *ts);
36
37/* ptimer.c */
38typedef struct ptimer_state ptimer_state;
39typedef void (*ptimer_cb)(void *opaque);
40
41ptimer_state *ptimer_init(QEMUBH *bh);
42void ptimer_set_period(ptimer_state *s, int64_t period);
43void ptimer_set_freq(ptimer_state *s, uint32_t freq);
44void ptimer_set_limit(ptimer_state *s, uint64_t limit, int reload);
45uint64_t ptimer_get_count(ptimer_state *s);
46void ptimer_set_count(ptimer_state *s, uint64_t count);
47void ptimer_run(ptimer_state *s, int oneshot);
48void ptimer_stop(ptimer_state *s);
49void qemu_put_ptimer(QEMUFile *f, ptimer_state *s);
50void qemu_get_ptimer(QEMUFile *f, ptimer_state *s);
51
52#endif