Make get_ticks_per_sec() a static inline
ticks_per_sec is a constant. There's no need to store it as a variable as it never changes since our time is based on units. Convert get_ticks_per_sec() to a static inline and move the constant into qemu-timer.h. Remove all references to QEMU_TIMER_BASE so that we consistently use this interface. Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
2faf58cd0b
commit
274dfed8ba
@ -26,7 +26,10 @@ void qemu_mod_timer(QEMUTimer *ts, int64_t expire_time);
|
|||||||
int qemu_timer_pending(QEMUTimer *ts);
|
int qemu_timer_pending(QEMUTimer *ts);
|
||||||
int qemu_timer_expired(QEMUTimer *timer_head, int64_t current_time);
|
int qemu_timer_expired(QEMUTimer *timer_head, int64_t current_time);
|
||||||
|
|
||||||
int64_t get_ticks_per_sec(void);
|
static inline int64_t get_ticks_per_sec(void)
|
||||||
|
{
|
||||||
|
return 1000000000LL;
|
||||||
|
}
|
||||||
|
|
||||||
void qemu_get_timer(QEMUFile *f, QEMUTimer *ts);
|
void qemu_get_timer(QEMUFile *f, QEMUTimer *ts);
|
||||||
void qemu_put_timer(QEMUFile *f, QEMUTimer *ts);
|
void qemu_put_timer(QEMUFile *f, QEMUTimer *ts);
|
||||||
|
20
vl.c
20
vl.c
@ -528,8 +528,6 @@ uint64_t muldiv64(uint64_t a, uint32_t b, uint32_t c)
|
|||||||
/***********************************************************/
|
/***********************************************************/
|
||||||
/* real time host monotonic timer */
|
/* real time host monotonic timer */
|
||||||
|
|
||||||
#define QEMU_TIMER_BASE 1000000000LL
|
|
||||||
|
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
|
|
||||||
static int64_t clock_freq;
|
static int64_t clock_freq;
|
||||||
@ -550,7 +548,7 @@ static int64_t get_clock(void)
|
|||||||
{
|
{
|
||||||
LARGE_INTEGER ti;
|
LARGE_INTEGER ti;
|
||||||
QueryPerformanceCounter(&ti);
|
QueryPerformanceCounter(&ti);
|
||||||
return muldiv64(ti.QuadPart, QEMU_TIMER_BASE, clock_freq);
|
return muldiv64(ti.QuadPart, get_ticks_per_sec(), clock_freq);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
@ -613,7 +611,7 @@ typedef struct TimersState {
|
|||||||
int64_t cpu_ticks_offset;
|
int64_t cpu_ticks_offset;
|
||||||
int64_t cpu_clock_offset;
|
int64_t cpu_clock_offset;
|
||||||
int32_t cpu_ticks_enabled;
|
int32_t cpu_ticks_enabled;
|
||||||
int64_t ticks_per_sec;
|
int64_t dummy;
|
||||||
} TimersState;
|
} TimersState;
|
||||||
|
|
||||||
TimersState timers_state;
|
TimersState timers_state;
|
||||||
@ -758,7 +756,7 @@ static void rtc_stop_timer(struct qemu_alarm_timer *t);
|
|||||||
fairly approximate, so ignore small variation.
|
fairly approximate, so ignore small variation.
|
||||||
When the guest is idle real and virtual time will be aligned in
|
When the guest is idle real and virtual time will be aligned in
|
||||||
the IO wait loop. */
|
the IO wait loop. */
|
||||||
#define ICOUNT_WOBBLE (QEMU_TIMER_BASE / 10)
|
#define ICOUNT_WOBBLE (get_ticks_per_sec() / 10)
|
||||||
|
|
||||||
static void icount_adjust(void)
|
static void icount_adjust(void)
|
||||||
{
|
{
|
||||||
@ -800,7 +798,7 @@ static void icount_adjust_rt(void * opaque)
|
|||||||
static void icount_adjust_vm(void * opaque)
|
static void icount_adjust_vm(void * opaque)
|
||||||
{
|
{
|
||||||
qemu_mod_timer(icount_vm_timer,
|
qemu_mod_timer(icount_vm_timer,
|
||||||
qemu_get_clock(vm_clock) + QEMU_TIMER_BASE / 10);
|
qemu_get_clock(vm_clock) + get_ticks_per_sec() / 10);
|
||||||
icount_adjust();
|
icount_adjust();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -816,7 +814,7 @@ static void init_icount_adjust(void)
|
|||||||
qemu_get_clock(rt_clock) + 1000);
|
qemu_get_clock(rt_clock) + 1000);
|
||||||
icount_vm_timer = qemu_new_timer(vm_clock, icount_adjust_vm, NULL);
|
icount_vm_timer = qemu_new_timer(vm_clock, icount_adjust_vm, NULL);
|
||||||
qemu_mod_timer(icount_vm_timer,
|
qemu_mod_timer(icount_vm_timer,
|
||||||
qemu_get_clock(vm_clock) + QEMU_TIMER_BASE / 10);
|
qemu_get_clock(vm_clock) + get_ticks_per_sec() / 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct qemu_alarm_timer alarm_timers[] = {
|
static struct qemu_alarm_timer alarm_timers[] = {
|
||||||
@ -1036,15 +1034,9 @@ int64_t qemu_get_clock(QEMUClock *clock)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int64_t get_ticks_per_sec(void)
|
|
||||||
{
|
|
||||||
return timers_state.ticks_per_sec;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void init_timers(void)
|
static void init_timers(void)
|
||||||
{
|
{
|
||||||
init_get_clock();
|
init_get_clock();
|
||||||
timers_state.ticks_per_sec = QEMU_TIMER_BASE;
|
|
||||||
rt_clock = qemu_new_clock(QEMU_TIMER_REALTIME);
|
rt_clock = qemu_new_clock(QEMU_TIMER_REALTIME);
|
||||||
vm_clock = qemu_new_clock(QEMU_TIMER_VIRTUAL);
|
vm_clock = qemu_new_clock(QEMU_TIMER_VIRTUAL);
|
||||||
}
|
}
|
||||||
@ -1081,7 +1073,7 @@ static const VMStateDescription vmstate_timers = {
|
|||||||
.minimum_version_id_old = 1,
|
.minimum_version_id_old = 1,
|
||||||
.fields = (VMStateField []) {
|
.fields = (VMStateField []) {
|
||||||
VMSTATE_INT64(cpu_ticks_offset, TimersState),
|
VMSTATE_INT64(cpu_ticks_offset, TimersState),
|
||||||
VMSTATE_INT64(ticks_per_sec, TimersState),
|
VMSTATE_INT64(dummy, TimersState),
|
||||||
VMSTATE_INT64_V(cpu_clock_offset, TimersState, 2),
|
VMSTATE_INT64_V(cpu_clock_offset, TimersState, 2),
|
||||||
VMSTATE_END_OF_LIST()
|
VMSTATE_END_OF_LIST()
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user