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:
Anthony Liguori 2009-09-11 10:28:26 -05:00
parent 2faf58cd0b
commit 274dfed8ba
2 changed files with 10 additions and 15 deletions

View File

@ -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
View File

@ -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()
} }