Revision 6ee093c9
b/audio/audio.c | ||
---|---|---|
1822 | 1822 |
} |
1823 | 1823 |
conf.period.ticks = 1; |
1824 | 1824 |
} else { |
1825 |
conf.period.ticks = ticks_per_sec / conf.period.hertz;
|
|
1825 |
conf.period.ticks = get_ticks_per_sec() / conf.period.hertz;
|
|
1826 | 1826 |
} |
1827 | 1827 |
|
1828 | 1828 |
e = qemu_add_vm_change_state_handler (audio_vm_change_state_handler, s); |
b/audio/noaudio.c | ||
---|---|---|
53 | 53 |
|
54 | 54 |
now = qemu_get_clock (vm_clock); |
55 | 55 |
ticks = now - no->old_ticks; |
56 |
bytes = (ticks * hw->info.bytes_per_second) / ticks_per_sec;
|
|
56 |
bytes = (ticks * hw->info.bytes_per_second) / get_ticks_per_sec();
|
|
57 | 57 |
bytes = audio_MIN (bytes, INT_MAX); |
58 | 58 |
samples = bytes >> hw->info.shift; |
59 | 59 |
|
... | ... | |
109 | 109 |
if (dead) { |
110 | 110 |
int64_t now = qemu_get_clock (vm_clock); |
111 | 111 |
int64_t ticks = now - no->old_ticks; |
112 |
int64_t bytes = (ticks * hw->info.bytes_per_second) / ticks_per_sec;
|
|
112 |
int64_t bytes = (ticks * hw->info.bytes_per_second) / get_ticks_per_sec();
|
|
113 | 113 |
|
114 | 114 |
no->old_ticks = now; |
115 | 115 |
bytes = audio_MIN (bytes, INT_MAX); |
b/audio/wavaudio.c | ||
---|---|---|
54 | 54 |
struct st_sample *src; |
55 | 55 |
int64_t now = qemu_get_clock (vm_clock); |
56 | 56 |
int64_t ticks = now - wav->old_ticks; |
57 |
int64_t bytes = (ticks * hw->info.bytes_per_second) / ticks_per_sec;
|
|
57 |
int64_t bytes = (ticks * hw->info.bytes_per_second) / get_ticks_per_sec();
|
|
58 | 58 |
|
59 | 59 |
if (bytes > INT_MAX) { |
60 | 60 |
samples = INT_MAX >> hw->info.shift; |
b/hw/acpi.c | ||
---|---|---|
79 | 79 |
static uint32_t get_pmtmr(PIIX4PMState *s) |
80 | 80 |
{ |
81 | 81 |
uint32_t d; |
82 |
d = muldiv64(qemu_get_clock(vm_clock), PM_FREQ, ticks_per_sec);
|
|
82 |
d = muldiv64(qemu_get_clock(vm_clock), PM_FREQ, get_ticks_per_sec());
|
|
83 | 83 |
return d & 0xffffff; |
84 | 84 |
} |
85 | 85 |
|
... | ... | |
88 | 88 |
int64_t d; |
89 | 89 |
int pmsts; |
90 | 90 |
pmsts = s->pmsts; |
91 |
d = muldiv64(qemu_get_clock(vm_clock), PM_FREQ, ticks_per_sec);
|
|
91 |
d = muldiv64(qemu_get_clock(vm_clock), PM_FREQ, get_ticks_per_sec());
|
|
92 | 92 |
if (d >= s->tmr_overflow_time) |
93 | 93 |
s->pmsts |= TMROF_EN; |
94 | 94 |
return s->pmsts; |
... | ... | |
105 | 105 |
qemu_set_irq(s->irq, sci_level); |
106 | 106 |
/* schedule a timer interruption if needed */ |
107 | 107 |
if ((s->pmen & TMROF_EN) && !(pmsts & TMROF_EN)) { |
108 |
expire_time = muldiv64(s->tmr_overflow_time, ticks_per_sec, PM_FREQ);
|
|
108 |
expire_time = muldiv64(s->tmr_overflow_time, get_ticks_per_sec(), PM_FREQ);
|
|
109 | 109 |
qemu_mod_timer(s->tmr_timer, expire_time); |
110 | 110 |
} else { |
111 | 111 |
qemu_del_timer(s->tmr_timer); |
... | ... | |
130 | 130 |
pmsts = get_pmsts(s); |
131 | 131 |
if (pmsts & val & TMROF_EN) { |
132 | 132 |
/* if TMRSTS is reset, then compute the new overflow time */ |
133 |
d = muldiv64(qemu_get_clock(vm_clock), PM_FREQ, ticks_per_sec); |
|
133 |
d = muldiv64(qemu_get_clock(vm_clock), PM_FREQ, |
|
134 |
get_ticks_per_sec()); |
|
134 | 135 |
s->tmr_overflow_time = (d + 0x800000LL) & ~0x7fffffLL; |
135 | 136 |
} |
136 | 137 |
s->pmsts &= ~val; |
b/hw/adlib.c | ||
---|---|---|
165 | 165 |
|
166 | 166 |
s->ticking[n] = 1; |
167 | 167 |
#ifdef DEBUG |
168 |
interval = ticks_per_sec * interval_Sec;
|
|
168 |
interval = get_ticks_per_sec() * interval_Sec;
|
|
169 | 169 |
exp = qemu_get_clock (vm_clock) + interval; |
170 | 170 |
s->exp[n] = exp; |
171 | 171 |
#endif |
b/hw/baum.c | ||
---|---|---|
335 | 335 |
int i; |
336 | 336 |
|
337 | 337 |
/* Allow 100ms to complete the DisplayData packet */ |
338 |
qemu_mod_timer(baum->cellCount_timer, qemu_get_clock(vm_clock) + ticks_per_sec / 10); |
|
338 |
qemu_mod_timer(baum->cellCount_timer, qemu_get_clock(vm_clock) + |
|
339 |
get_ticks_per_sec() / 10); |
|
339 | 340 |
for (i = 0; i < baum->x * baum->y ; i++) { |
340 | 341 |
EAT(c); |
341 | 342 |
cells[i] = c; |
b/hw/bt-hci-csr.c | ||
---|---|---|
363 | 363 |
switch (cmd) { |
364 | 364 |
case CHR_IOCTL_SERIAL_SET_PARAMS: |
365 | 365 |
ssp = (QEMUSerialSetParams *) arg; |
366 |
s->baud_delay = ticks_per_sec / ssp->speed;
|
|
366 |
s->baud_delay = get_ticks_per_sec() / ssp->speed;
|
|
367 | 367 |
/* Moments later... (but shorter than 100ms) */ |
368 | 368 |
s->modem_state |= CHR_TIOCM_CTS; |
369 | 369 |
break; |
... | ... | |
389 | 389 |
s->out_len = 0; |
390 | 390 |
s->out_size = FIFO_LEN; |
391 | 391 |
s->in_len = 0; |
392 |
s->baud_delay = ticks_per_sec;
|
|
392 |
s->baud_delay = get_ticks_per_sec();
|
|
393 | 393 |
s->enable = 0; |
394 | 394 |
s->in_hdr = INT_MAX; |
395 | 395 |
s->in_data = INT_MAX; |
b/hw/bt-hci.c | ||
---|---|---|
577 | 577 |
static void bt_hci_mod_timer_1280ms(QEMUTimer *timer, int period) |
578 | 578 |
{ |
579 | 579 |
qemu_mod_timer(timer, qemu_get_clock(vm_clock) + |
580 |
muldiv64(period << 7, ticks_per_sec, 100));
|
|
580 |
muldiv64(period << 7, get_ticks_per_sec(), 100));
|
|
581 | 581 |
} |
582 | 582 |
|
583 | 583 |
static void bt_hci_inquiry_start(struct bt_hci_s *hci, int length) |
... | ... | |
1086 | 1086 |
bt_hci_event_status(hci, HCI_SUCCESS); |
1087 | 1087 |
|
1088 | 1088 |
qemu_mod_timer(link->acl_mode_timer, qemu_get_clock(vm_clock) + |
1089 |
muldiv64(interval * 625, ticks_per_sec, 1000000));
|
|
1089 |
muldiv64(interval * 625, get_ticks_per_sec(), 1000000));
|
|
1090 | 1090 |
bt_hci_lmp_mode_change_master(hci, link->link, mode, interval); |
1091 | 1091 |
|
1092 | 1092 |
return 0; |
b/hw/cuda.c | ||
---|---|---|
171 | 171 |
unsigned int counter; |
172 | 172 |
|
173 | 173 |
d = muldiv64(qemu_get_clock(vm_clock) - s->load_time, |
174 |
CUDA_TIMER_FREQ, ticks_per_sec);
|
|
174 |
CUDA_TIMER_FREQ, get_ticks_per_sec());
|
|
175 | 175 |
if (s->index == 0) { |
176 | 176 |
/* the timer goes down from latch to -1 (period of latch + 2) */ |
177 | 177 |
if (d <= (s->counter_value + 1)) { |
... | ... | |
201 | 201 |
|
202 | 202 |
/* current counter value */ |
203 | 203 |
d = muldiv64(current_time - s->load_time, |
204 |
CUDA_TIMER_FREQ, ticks_per_sec);
|
|
204 |
CUDA_TIMER_FREQ, get_ticks_per_sec());
|
|
205 | 205 |
/* the timer goes down from latch to -1 (period of latch + 2) */ |
206 | 206 |
if (d <= (s->counter_value + 1)) { |
207 | 207 |
counter = (s->counter_value - d) & 0xffff; |
... | ... | |
220 | 220 |
} |
221 | 221 |
CUDA_DPRINTF("latch=%d counter=%" PRId64 " delta_next=%" PRId64 "\n", |
222 | 222 |
s->latch, d, next_time - d); |
223 |
next_time = muldiv64(next_time, ticks_per_sec, CUDA_TIMER_FREQ) +
|
|
223 |
next_time = muldiv64(next_time, get_ticks_per_sec(), CUDA_TIMER_FREQ) +
|
|
224 | 224 |
s->load_time; |
225 | 225 |
if (next_time <= current_time) |
226 | 226 |
next_time = current_time + 1; |
... | ... | |
505 | 505 |
} |
506 | 506 |
qemu_mod_timer(s->adb_poll_timer, |
507 | 507 |
qemu_get_clock(vm_clock) + |
508 |
(ticks_per_sec / CUDA_ADB_POLL_FREQ));
|
|
508 |
(get_ticks_per_sec() / CUDA_ADB_POLL_FREQ));
|
|
509 | 509 |
} |
510 | 510 |
|
511 | 511 |
static void cuda_receive_packet(CUDAState *s, |
... | ... | |
523 | 523 |
if (autopoll) { |
524 | 524 |
qemu_mod_timer(s->adb_poll_timer, |
525 | 525 |
qemu_get_clock(vm_clock) + |
526 |
(ticks_per_sec / CUDA_ADB_POLL_FREQ));
|
|
526 |
(get_ticks_per_sec() / CUDA_ADB_POLL_FREQ));
|
|
527 | 527 |
} else { |
528 | 528 |
qemu_del_timer(s->adb_poll_timer); |
529 | 529 |
} |
... | ... | |
534 | 534 |
break; |
535 | 535 |
case CUDA_SET_TIME: |
536 | 536 |
ti = (((uint32_t)data[1]) << 24) + (((uint32_t)data[2]) << 16) + (((uint32_t)data[3]) << 8) + data[4]; |
537 |
s->tick_offset = ti - (qemu_get_clock(vm_clock) / ticks_per_sec);
|
|
537 |
s->tick_offset = ti - (qemu_get_clock(vm_clock) / get_ticks_per_sec());
|
|
538 | 538 |
obuf[0] = CUDA_PACKET; |
539 | 539 |
obuf[1] = 0; |
540 | 540 |
obuf[2] = 0; |
541 | 541 |
cuda_send_packet_to_host(s, obuf, 3); |
542 | 542 |
break; |
543 | 543 |
case CUDA_GET_TIME: |
544 |
ti = s->tick_offset + (qemu_get_clock(vm_clock) / ticks_per_sec);
|
|
544 |
ti = s->tick_offset + (qemu_get_clock(vm_clock) / get_ticks_per_sec());
|
|
545 | 545 |
obuf[0] = CUDA_PACKET; |
546 | 546 |
obuf[1] = 0; |
547 | 547 |
obuf[2] = 0; |
b/hw/dp8393x.c | ||
---|---|---|
290 | 290 |
|
291 | 291 |
ticks = s->regs[SONIC_WT1] << 16 | s->regs[SONIC_WT0]; |
292 | 292 |
s->wt_last_update = qemu_get_clock(vm_clock); |
293 |
delay = ticks_per_sec * ticks / 5000000;
|
|
293 |
delay = get_ticks_per_sec() * ticks / 5000000;
|
|
294 | 294 |
qemu_mod_timer(s->watchdog, s->wt_last_update + delay); |
295 | 295 |
} |
296 | 296 |
|
b/hw/fdc.c | ||
---|---|---|
1541 | 1541 |
/* XXX: should set main status register to busy */ |
1542 | 1542 |
cur_drv->head = (fdctrl->fifo[1] >> 2) & 1; |
1543 | 1543 |
qemu_mod_timer(fdctrl->result_timer, |
1544 |
qemu_get_clock(vm_clock) + (ticks_per_sec / 50));
|
|
1544 |
qemu_get_clock(vm_clock) + (get_ticks_per_sec() / 50));
|
|
1545 | 1545 |
} |
1546 | 1546 |
|
1547 | 1547 |
static void fdctrl_handle_format_track (fdctrl_t *fdctrl, int direction) |
b/hw/i8254.c | ||
---|---|---|
66 | 66 |
uint64_t d; |
67 | 67 |
int counter; |
68 | 68 |
|
69 |
d = muldiv64(qemu_get_clock(vm_clock) - s->count_load_time, PIT_FREQ, ticks_per_sec); |
|
69 |
d = muldiv64(qemu_get_clock(vm_clock) - s->count_load_time, PIT_FREQ, |
|
70 |
get_ticks_per_sec()); |
|
70 | 71 |
switch(s->mode) { |
71 | 72 |
case 0: |
72 | 73 |
case 1: |
... | ... | |
91 | 92 |
uint64_t d; |
92 | 93 |
int out; |
93 | 94 |
|
94 |
d = muldiv64(current_time - s->count_load_time, PIT_FREQ, ticks_per_sec); |
|
95 |
d = muldiv64(current_time - s->count_load_time, PIT_FREQ, |
|
96 |
get_ticks_per_sec()); |
|
95 | 97 |
switch(s->mode) { |
96 | 98 |
default: |
97 | 99 |
case 0: |
... | ... | |
130 | 132 |
uint64_t d, next_time, base; |
131 | 133 |
int period2; |
132 | 134 |
|
133 |
d = muldiv64(current_time - s->count_load_time, PIT_FREQ, ticks_per_sec); |
|
135 |
d = muldiv64(current_time - s->count_load_time, PIT_FREQ, |
|
136 |
get_ticks_per_sec()); |
|
134 | 137 |
switch(s->mode) { |
135 | 138 |
default: |
136 | 139 |
case 0: |
... | ... | |
166 | 169 |
break; |
167 | 170 |
} |
168 | 171 |
/* convert to timer units */ |
169 |
next_time = s->count_load_time + muldiv64(next_time, ticks_per_sec, PIT_FREQ); |
|
172 |
next_time = s->count_load_time + muldiv64(next_time, get_ticks_per_sec(), |
|
173 |
PIT_FREQ); |
|
170 | 174 |
/* fix potential rounding problems */ |
171 | 175 |
/* XXX: better solution: use a clock at PIT_FREQ Hz */ |
172 | 176 |
if (next_time <= current_time) |
... | ... | |
373 | 377 |
#ifdef DEBUG_PIT |
374 | 378 |
printf("irq_level=%d next_delay=%f\n", |
375 | 379 |
irq_level, |
376 |
(double)(expire_time - current_time) / ticks_per_sec);
|
|
380 |
(double)(expire_time - current_time) / get_ticks_per_sec());
|
|
377 | 381 |
#endif |
378 | 382 |
s->next_transition_time = expire_time; |
379 | 383 |
if (expire_time != -1) |
b/hw/i8259.c | ||
---|---|---|
247 | 247 |
#ifdef DEBUG_IRQ_LATENCY |
248 | 248 |
printf("IRQ%d latency=%0.3fus\n", |
249 | 249 |
irq, |
250 |
(double)(qemu_get_clock(vm_clock) - irq_time[irq]) * 1000000.0 / ticks_per_sec); |
|
250 |
(double)(qemu_get_clock(vm_clock) - |
|
251 |
irq_time[irq]) * 1000000.0 / get_ticks_per_sec()); |
|
251 | 252 |
#endif |
252 | 253 |
#if defined(DEBUG_PIC) |
253 | 254 |
printf("pic_interrupt: irq=%d\n", irq); |
b/hw/ide/core.c | ||
---|---|---|
647 | 647 |
option _only_ to install Windows 2000. You must disable it |
648 | 648 |
for normal use. */ |
649 | 649 |
qemu_mod_timer(s->sector_write_timer, |
650 |
qemu_get_clock(vm_clock) + (ticks_per_sec / 1000));
|
|
650 |
qemu_get_clock(vm_clock) + (get_ticks_per_sec() / 1000));
|
|
651 | 651 |
} else |
652 | 652 |
#endif |
653 | 653 |
{ |
b/hw/mc146818rtc.c | ||
---|---|---|
109 | 109 |
/* divide each RTC interval to 2 - 8 smaller intervals */ |
110 | 110 |
int c = MIN(s->irq_coalesced, 7) + 1; |
111 | 111 |
int64_t next_clock = qemu_get_clock(vm_clock) + |
112 |
muldiv64(s->period / c, ticks_per_sec, 32768);
|
|
112 |
muldiv64(s->period / c, get_ticks_per_sec(), 32768);
|
|
113 | 113 |
qemu_mod_timer(s->coalesced_timer, next_clock); |
114 | 114 |
} |
115 | 115 |
} |
... | ... | |
159 | 159 |
s->period = period; |
160 | 160 |
#endif |
161 | 161 |
/* compute 32 khz clock */ |
162 |
cur_clock = muldiv64(current_time, 32768, ticks_per_sec);
|
|
162 |
cur_clock = muldiv64(current_time, 32768, get_ticks_per_sec());
|
|
163 | 163 |
next_irq_clock = (cur_clock & ~(period - 1)) + period; |
164 |
s->next_periodic_time = muldiv64(next_irq_clock, ticks_per_sec, 32768) + 1;
|
|
164 |
s->next_periodic_time = muldiv64(next_irq_clock, get_ticks_per_sec(), 32768) + 1;
|
|
165 | 165 |
qemu_mod_timer(s->periodic_timer, s->next_periodic_time); |
166 | 166 |
} else { |
167 | 167 |
#ifdef TARGET_I386 |
... | ... | |
380 | 380 |
|
381 | 381 |
/* if the oscillator is not in normal operation, we do not update */ |
382 | 382 |
if ((s->cmos_data[RTC_REG_A] & 0x70) != 0x20) { |
383 |
s->next_second_time += ticks_per_sec;
|
|
383 |
s->next_second_time += get_ticks_per_sec();
|
|
384 | 384 |
qemu_mod_timer(s->second_timer, s->next_second_time); |
385 | 385 |
} else { |
386 | 386 |
rtc_next_second(&s->current_tm); |
... | ... | |
391 | 391 |
} |
392 | 392 |
/* should be 244 us = 8 / 32768 seconds, but currently the |
393 | 393 |
timers do not have the necessary resolution. */ |
394 |
delay = (ticks_per_sec * 1) / 100;
|
|
394 |
delay = (get_ticks_per_sec() * 1) / 100;
|
|
395 | 395 |
if (delay < 1) |
396 | 396 |
delay = 1; |
397 | 397 |
qemu_mod_timer(s->second_timer2, |
... | ... | |
431 | 431 |
/* clear update in progress bit */ |
432 | 432 |
s->cmos_data[RTC_REG_A] &= ~REG_A_UIP; |
433 | 433 |
|
434 |
s->next_second_time += ticks_per_sec;
|
|
434 |
s->next_second_time += get_ticks_per_sec();
|
|
435 | 435 |
qemu_mod_timer(s->second_timer, s->next_second_time); |
436 | 436 |
} |
437 | 437 |
|
... | ... | |
616 | 616 |
s->second_timer2 = qemu_new_timer(vm_clock, |
617 | 617 |
rtc_update_second2, s); |
618 | 618 |
|
619 |
s->next_second_time = qemu_get_clock(vm_clock) + (ticks_per_sec * 99) / 100;
|
|
619 |
s->next_second_time = qemu_get_clock(vm_clock) + (get_ticks_per_sec() * 99) / 100;
|
|
620 | 620 |
qemu_mod_timer(s->second_timer2, s->next_second_time); |
621 | 621 |
|
622 | 622 |
register_ioport_write(base, 2, 1, cmos_ioport_write, s); |
... | ... | |
754 | 754 |
s->second_timer2 = qemu_new_timer(vm_clock, |
755 | 755 |
rtc_update_second2, s); |
756 | 756 |
|
757 |
s->next_second_time = qemu_get_clock(vm_clock) + (ticks_per_sec * 99) / 100;
|
|
757 |
s->next_second_time = qemu_get_clock(vm_clock) + (get_ticks_per_sec() * 99) / 100;
|
|
758 | 758 |
qemu_mod_timer(s->second_timer2, s->next_second_time); |
759 | 759 |
|
760 | 760 |
io_memory = cpu_register_io_memory(rtc_mm_read, rtc_mm_write, s); |
b/hw/mips_timer.c | ||
---|---|---|
27 | 27 |
else |
28 | 28 |
return env->CP0_Count + |
29 | 29 |
(uint32_t)muldiv64(qemu_get_clock(vm_clock), |
30 |
TIMER_FREQ, ticks_per_sec);
|
|
30 |
TIMER_FREQ, get_ticks_per_sec());
|
|
31 | 31 |
} |
32 | 32 |
|
33 | 33 |
static void cpu_mips_timer_update(CPUState *env) |
... | ... | |
37 | 37 |
|
38 | 38 |
now = qemu_get_clock(vm_clock); |
39 | 39 |
wait = env->CP0_Compare - env->CP0_Count - |
40 |
(uint32_t)muldiv64(now, TIMER_FREQ, ticks_per_sec);
|
|
41 |
next = now + muldiv64(wait, ticks_per_sec, TIMER_FREQ);
|
|
40 |
(uint32_t)muldiv64(now, TIMER_FREQ, get_ticks_per_sec());
|
|
41 |
next = now + muldiv64(wait, get_ticks_per_sec(), TIMER_FREQ);
|
|
42 | 42 |
qemu_mod_timer(env->timer, next); |
43 | 43 |
} |
44 | 44 |
|
... | ... | |
50 | 50 |
/* Store new count register */ |
51 | 51 |
env->CP0_Count = |
52 | 52 |
count - (uint32_t)muldiv64(qemu_get_clock(vm_clock), |
53 |
TIMER_FREQ, ticks_per_sec);
|
|
53 |
TIMER_FREQ, get_ticks_per_sec());
|
|
54 | 54 |
/* Update timer timer */ |
55 | 55 |
cpu_mips_timer_update(env); |
56 | 56 |
} |
... | ... | |
75 | 75 |
{ |
76 | 76 |
/* Store the current value */ |
77 | 77 |
env->CP0_Count += (uint32_t)muldiv64(qemu_get_clock(vm_clock), |
78 |
TIMER_FREQ, ticks_per_sec);
|
|
78 |
TIMER_FREQ, get_ticks_per_sec());
|
|
79 | 79 |
} |
80 | 80 |
|
81 | 81 |
static void mips_timer_cb (void *opaque) |
b/hw/omap1.c | ||
---|---|---|
675 | 675 |
|
676 | 676 |
if (timer->st && timer->enable && timer->rate) |
677 | 677 |
return timer->val - muldiv64(distance >> (timer->ptv + 1), |
678 |
timer->rate, ticks_per_sec);
|
|
678 |
timer->rate, get_ticks_per_sec());
|
|
679 | 679 |
else |
680 | 680 |
return timer->val; |
681 | 681 |
} |
... | ... | |
693 | 693 |
if (timer->enable && timer->st && timer->rate) { |
694 | 694 |
timer->val = timer->reset_val; /* Should skip this on clk enable */ |
695 | 695 |
expires = muldiv64((uint64_t) timer->val << (timer->ptv + 1), |
696 |
ticks_per_sec, timer->rate);
|
|
696 |
get_ticks_per_sec(), timer->rate);
|
|
697 | 697 |
|
698 | 698 |
/* If timer expiry would be sooner than in about 1 ms and |
699 | 699 |
* auto-reload isn't set, then fire immediately. This is a hack |
... | ... | |
701 | 701 |
* sets the interval to a very low value and polls the status bit |
702 | 702 |
* in a busy loop when it wants to sleep just a couple of CPU |
703 | 703 |
* ticks. */ |
704 |
if (expires > (ticks_per_sec >> 10) || timer->ar)
|
|
704 |
if (expires > (get_ticks_per_sec() >> 10) || timer->ar)
|
|
705 | 705 |
qemu_mod_timer(timer->timer, timer->time + expires); |
706 | 706 |
else |
707 | 707 |
qemu_bh_schedule(timer->tick); |
... | ... | |
1158 | 1158 |
now -= s->ulpd_gauge_start; |
1159 | 1159 |
|
1160 | 1160 |
/* 32-kHz ticks */ |
1161 |
ticks = muldiv64(now, 32768, ticks_per_sec);
|
|
1161 |
ticks = muldiv64(now, 32768, get_ticks_per_sec());
|
|
1162 | 1162 |
s->ulpd_pm_regs[0x00 >> 2] = (ticks >> 0) & 0xffff; |
1163 | 1163 |
s->ulpd_pm_regs[0x04 >> 2] = (ticks >> 16) & 0xffff; |
1164 | 1164 |
if (ticks >> 32) /* OVERFLOW_32K */ |
1165 | 1165 |
s->ulpd_pm_regs[0x14 >> 2] |= 1 << 2; |
1166 | 1166 |
|
1167 | 1167 |
/* High frequency ticks */ |
1168 |
ticks = muldiv64(now, 12000000, ticks_per_sec);
|
|
1168 |
ticks = muldiv64(now, 12000000, get_ticks_per_sec());
|
|
1169 | 1169 |
s->ulpd_pm_regs[0x08 >> 2] = (ticks >> 0) & 0xffff; |
1170 | 1170 |
s->ulpd_pm_regs[0x0c >> 2] = (ticks >> 16) & 0xffff; |
1171 | 1171 |
if (ticks >> 32) /* OVERFLOW_HI_FREQ */ |
... | ... | |
3831 | 3831 |
s->rx_req = s->rx_rate << bps[(s->rcr[0] >> 5) & 7]; |
3832 | 3832 |
|
3833 | 3833 |
omap_mcbsp_rx_newdata(s); |
3834 |
qemu_mod_timer(s->source_timer, qemu_get_clock(vm_clock) + ticks_per_sec); |
|
3834 |
qemu_mod_timer(s->source_timer, qemu_get_clock(vm_clock) + |
|
3835 |
get_ticks_per_sec()); |
|
3835 | 3836 |
} |
3836 | 3837 |
|
3837 | 3838 |
static void omap_mcbsp_rx_start(struct omap_mcbsp_s *s) |
... | ... | |
3876 | 3877 |
s->tx_req = s->tx_rate << bps[(s->xcr[0] >> 5) & 7]; |
3877 | 3878 |
|
3878 | 3879 |
omap_mcbsp_tx_newdata(s); |
3879 |
qemu_mod_timer(s->sink_timer, qemu_get_clock(vm_clock) + ticks_per_sec); |
|
3880 |
qemu_mod_timer(s->sink_timer, qemu_get_clock(vm_clock) + |
|
3881 |
get_ticks_per_sec()); |
|
3880 | 3882 |
} |
3881 | 3883 |
|
3882 | 3884 |
static void omap_mcbsp_tx_start(struct omap_mcbsp_s *s) |
b/hw/omap2.c | ||
---|---|---|
412 | 412 |
if (s->trigger == gpt_trigger_none) |
413 | 413 |
omap_gp_timer_out(s, s->scpwm); |
414 | 414 |
/* TODO: make sure this doesn't overflow 32-bits */ |
415 |
s->ticks_per_sec = ticks_per_sec << (s->pre ? s->ptv + 1 : 0);
|
|
415 |
s->ticks_per_sec = get_ticks_per_sec() << (s->pre ? s->ptv + 1 : 0);
|
|
416 | 416 |
omap_gp_timer_update(s); |
417 | 417 |
break; |
418 | 418 |
|
... | ... | |
491 | 491 |
|
492 | 492 |
/* 32-kHz Sync Timer of the OMAP2 */ |
493 | 493 |
static uint32_t omap_synctimer_read(struct omap_synctimer_s *s) { |
494 |
return muldiv64(qemu_get_clock(vm_clock), 0x8000, ticks_per_sec);
|
|
494 |
return muldiv64(qemu_get_clock(vm_clock), 0x8000, get_ticks_per_sec());
|
|
495 | 495 |
} |
496 | 496 |
|
497 | 497 |
static void omap_synctimer_reset(struct omap_synctimer_s *s) |
b/hw/pcnet.c | ||
---|---|---|
726 | 726 |
{ |
727 | 727 |
int64_t next_time = current_time + |
728 | 728 |
muldiv64(65536 - (CSR_SPND(s) ? 0 : CSR_POLL(s)), |
729 |
ticks_per_sec, 33000000L);
|
|
729 |
get_ticks_per_sec(), 33000000L);
|
|
730 | 730 |
if (next_time <= current_time) |
731 | 731 |
next_time = current_time + 1; |
732 | 732 |
return next_time; |
b/hw/pflash_cfi02.c | ||
---|---|---|
389 | 389 |
pflash_update(pfl, 0, pfl->chip_len); |
390 | 390 |
/* Let's wait 5 seconds before chip erase is done */ |
391 | 391 |
qemu_mod_timer(pfl->timer, |
392 |
qemu_get_clock(vm_clock) + (ticks_per_sec * 5));
|
|
392 |
qemu_get_clock(vm_clock) + (get_ticks_per_sec() * 5));
|
|
393 | 393 |
break; |
394 | 394 |
case 0x30: |
395 | 395 |
/* Sector erase */ |
... | ... | |
402 | 402 |
pfl->status = 0x00; |
403 | 403 |
/* Let's wait 1/2 second before sector erase is done */ |
404 | 404 |
qemu_mod_timer(pfl->timer, |
405 |
qemu_get_clock(vm_clock) + (ticks_per_sec / 2));
|
|
405 |
qemu_get_clock(vm_clock) + (get_ticks_per_sec() / 2));
|
|
406 | 406 |
break; |
407 | 407 |
default: |
408 | 408 |
DPRINTF("%s: invalid command %02x (wc 5)\n", __func__, cmd); |
b/hw/pl031.c | ||
---|---|---|
67 | 67 |
{ |
68 | 68 |
/* This assumes qemu_get_clock returns the time since the machine was |
69 | 69 |
created. */ |
70 |
return s->tick_offset + qemu_get_clock(vm_clock) / ticks_per_sec;
|
|
70 |
return s->tick_offset + qemu_get_clock(vm_clock) / get_ticks_per_sec();
|
|
71 | 71 |
} |
72 | 72 |
|
73 | 73 |
static void pl031_set_alarm(pl031_state *s) |
... | ... | |
76 | 76 |
uint32_t ticks; |
77 | 77 |
|
78 | 78 |
now = qemu_get_clock(vm_clock); |
79 |
ticks = s->tick_offset + now / ticks_per_sec;
|
|
79 |
ticks = s->tick_offset + now / get_ticks_per_sec();
|
|
80 | 80 |
|
81 | 81 |
/* The timer wraps around. This subtraction also wraps in the same way, |
82 | 82 |
and gives correct results when alarm < now_ticks. */ |
... | ... | |
86 | 86 |
qemu_del_timer(s->timer); |
87 | 87 |
pl031_interrupt(s); |
88 | 88 |
} else { |
89 |
qemu_mod_timer(s->timer, now + (int64_t)ticks * ticks_per_sec);
|
|
89 |
qemu_mod_timer(s->timer, now + (int64_t)ticks * get_ticks_per_sec());
|
|
90 | 90 |
} |
91 | 91 |
} |
92 | 92 |
|
b/hw/ppc.c | ||
---|---|---|
397 | 397 |
int64_t tb_offset) |
398 | 398 |
{ |
399 | 399 |
/* TB time in tb periods */ |
400 |
return muldiv64(vmclk, tb_env->tb_freq, ticks_per_sec) + tb_offset;
|
|
400 |
return muldiv64(vmclk, tb_env->tb_freq, get_ticks_per_sec()) + tb_offset;
|
|
401 | 401 |
} |
402 | 402 |
|
403 | 403 |
uint32_t cpu_ppc_load_tbl (CPUState *env) |
... | ... | |
430 | 430 |
static inline void cpu_ppc_store_tb(ppc_tb_t *tb_env, uint64_t vmclk, |
431 | 431 |
int64_t *tb_offsetp, uint64_t value) |
432 | 432 |
{ |
433 |
*tb_offsetp = value - muldiv64(vmclk, tb_env->tb_freq, ticks_per_sec);
|
|
433 |
*tb_offsetp = value - muldiv64(vmclk, tb_env->tb_freq, get_ticks_per_sec());
|
|
434 | 434 |
LOG_TB("%s: tb %016" PRIx64 " offset %08" PRIx64 "\n", |
435 | 435 |
__func__, value, *tb_offsetp); |
436 | 436 |
} |
... | ... | |
557 | 557 |
|
558 | 558 |
diff = next - qemu_get_clock(vm_clock); |
559 | 559 |
if (diff >= 0) |
560 |
decr = muldiv64(diff, tb_env->decr_freq, ticks_per_sec);
|
|
560 |
decr = muldiv64(diff, tb_env->decr_freq, get_ticks_per_sec());
|
|
561 | 561 |
else |
562 |
decr = -muldiv64(-diff, tb_env->decr_freq, ticks_per_sec);
|
|
562 |
decr = -muldiv64(-diff, tb_env->decr_freq, get_ticks_per_sec());
|
|
563 | 563 |
LOG_TB("%s: %08" PRIx32 "\n", __func__, decr); |
564 | 564 |
|
565 | 565 |
return decr; |
... | ... | |
586 | 586 |
|
587 | 587 |
diff = qemu_get_clock(vm_clock) - tb_env->purr_start; |
588 | 588 |
|
589 |
return tb_env->purr_load + muldiv64(diff, tb_env->tb_freq, ticks_per_sec);
|
|
589 |
return tb_env->purr_load + muldiv64(diff, tb_env->tb_freq, get_ticks_per_sec());
|
|
590 | 590 |
} |
591 | 591 |
|
592 | 592 |
/* When decrementer expires, |
... | ... | |
618 | 618 |
LOG_TB("%s: %08" PRIx32 " => %08" PRIx32 "\n", __func__, |
619 | 619 |
decr, value); |
620 | 620 |
now = qemu_get_clock(vm_clock); |
621 |
next = now + muldiv64(value, ticks_per_sec, tb_env->decr_freq);
|
|
621 |
next = now + muldiv64(value, get_ticks_per_sec(), tb_env->decr_freq);
|
|
622 | 622 |
if (is_excp) |
623 | 623 |
next += *nextp - now; |
624 | 624 |
if (next == now) |
... | ... | |
788 | 788 |
/* Cannot occur, but makes gcc happy */ |
789 | 789 |
return; |
790 | 790 |
} |
791 |
next = now + muldiv64(next, ticks_per_sec, tb_env->tb_freq);
|
|
791 |
next = now + muldiv64(next, get_ticks_per_sec(), tb_env->tb_freq);
|
|
792 | 792 |
if (next == now) |
793 | 793 |
next++; |
794 | 794 |
qemu_mod_timer(ppcemb_timer->fit_timer, next); |
... | ... | |
818 | 818 |
__func__, ppcemb_timer->pit_reload); |
819 | 819 |
now = qemu_get_clock(vm_clock); |
820 | 820 |
next = now + muldiv64(ppcemb_timer->pit_reload, |
821 |
ticks_per_sec, tb_env->decr_freq);
|
|
821 |
get_ticks_per_sec(), tb_env->decr_freq);
|
|
822 | 822 |
if (is_excp) |
823 | 823 |
next += tb_env->decr_next - now; |
824 | 824 |
if (next == now) |
... | ... | |
878 | 878 |
/* Cannot occur, but makes gcc happy */ |
879 | 879 |
return; |
880 | 880 |
} |
881 |
next = now + muldiv64(next, ticks_per_sec, tb_env->decr_freq);
|
|
881 |
next = now + muldiv64(next, get_ticks_per_sec(), tb_env->decr_freq);
|
|
882 | 882 |
if (next == now) |
883 | 883 |
next++; |
884 | 884 |
LOG_TB("%s: TCR " TARGET_FMT_lx " TSR " TARGET_FMT_lx "\n", __func__, |
b/hw/ppc405_uc.c | ||
---|---|---|
1379 | 1379 |
case 0x00: |
1380 | 1380 |
/* Time base counter */ |
1381 | 1381 |
ret = muldiv64(qemu_get_clock(vm_clock) + gpt->tb_offset, |
1382 |
gpt->tb_freq, ticks_per_sec);
|
|
1382 |
gpt->tb_freq, get_ticks_per_sec());
|
|
1383 | 1383 |
break; |
1384 | 1384 |
case 0x10: |
1385 | 1385 |
/* Output enable */ |
... | ... | |
1434 | 1434 |
switch (addr) { |
1435 | 1435 |
case 0x00: |
1436 | 1436 |
/* Time base counter */ |
1437 |
gpt->tb_offset = muldiv64(value, ticks_per_sec, gpt->tb_freq)
|
|
1437 |
gpt->tb_offset = muldiv64(value, get_ticks_per_sec(), gpt->tb_freq)
|
|
1438 | 1438 |
- qemu_get_clock(vm_clock); |
1439 | 1439 |
ppc4xx_gpt_compute_timer(gpt); |
1440 | 1440 |
break; |
b/hw/pxa2xx_timer.c | ||
---|---|---|
98 | 98 |
uint64_t new_qemu; |
99 | 99 |
|
100 | 100 |
now_vm = s->clock + |
101 |
muldiv64(now_qemu - s->lastload, s->freq, ticks_per_sec);
|
|
101 |
muldiv64(now_qemu - s->lastload, s->freq, get_ticks_per_sec());
|
|
102 | 102 |
|
103 | 103 |
for (i = 0; i < 4; i ++) { |
104 | 104 |
new_qemu = now_qemu + muldiv64((uint32_t) (s->timer[i].value - now_vm), |
105 |
ticks_per_sec, s->freq);
|
|
105 |
get_ticks_per_sec(), s->freq);
|
|
106 | 106 |
qemu_mod_timer(s->timer[i].qtimer, new_qemu); |
107 | 107 |
} |
108 | 108 |
} |
... | ... | |
127 | 127 |
|
128 | 128 |
now_vm = s->tm4[counter].clock + muldiv64(now_qemu - |
129 | 129 |
s->tm4[counter].lastload, |
130 |
s->tm4[counter].freq, ticks_per_sec);
|
|
130 |
s->tm4[counter].freq, get_ticks_per_sec());
|
|
131 | 131 |
|
132 | 132 |
new_qemu = now_qemu + muldiv64((uint32_t) (s->tm4[n].tm.value - now_vm), |
133 |
ticks_per_sec, s->tm4[counter].freq);
|
|
133 |
get_ticks_per_sec(), s->tm4[counter].freq);
|
|
134 | 134 |
qemu_mod_timer(s->tm4[n].tm.qtimer, new_qemu); |
135 | 135 |
} |
136 | 136 |
|
... | ... | |
158 | 158 |
return s->tm4[tm].tm.value; |
159 | 159 |
case OSCR: |
160 | 160 |
return s->clock + muldiv64(qemu_get_clock(vm_clock) - |
161 |
s->lastload, s->freq, ticks_per_sec);
|
|
161 |
s->lastload, s->freq, get_ticks_per_sec());
|
|
162 | 162 |
case OSCR11: tm ++; |
163 | 163 |
case OSCR10: tm ++; |
164 | 164 |
case OSCR9: tm ++; |
... | ... | |
175 | 175 |
s->snapshot = s->tm4[tm - 1].clock + muldiv64( |
176 | 176 |
qemu_get_clock(vm_clock) - |
177 | 177 |
s->tm4[tm - 1].lastload, |
178 |
s->tm4[tm - 1].freq, ticks_per_sec);
|
|
178 |
s->tm4[tm - 1].freq, get_ticks_per_sec());
|
|
179 | 179 |
else |
180 | 180 |
s->snapshot = s->tm4[tm - 1].clock; |
181 | 181 |
} |
... | ... | |
183 | 183 |
if (!s->tm4[tm].freq) |
184 | 184 |
return s->tm4[tm].clock; |
185 | 185 |
return s->tm4[tm].clock + muldiv64(qemu_get_clock(vm_clock) - |
186 |
s->tm4[tm].lastload, s->tm4[tm].freq, ticks_per_sec);
|
|
186 |
s->tm4[tm].lastload, s->tm4[tm].freq, get_ticks_per_sec());
|
|
187 | 187 |
case OIER: |
188 | 188 |
return s->irq_enabled; |
189 | 189 |
case OSSR: /* Status register */ |
b/hw/rc4030.c | ||
---|---|---|
104 | 104 |
|
105 | 105 |
tm_hz = 1000 / (s->itr + 1); |
106 | 106 |
|
107 |
qemu_mod_timer(s->periodic_timer, qemu_get_clock(vm_clock) + ticks_per_sec / tm_hz); |
|
107 |
qemu_mod_timer(s->periodic_timer, qemu_get_clock(vm_clock) + |
|
108 |
get_ticks_per_sec() / tm_hz); |
|
108 | 109 |
} |
109 | 110 |
|
110 | 111 |
/* called for accesses to rc4030 */ |
b/hw/rtl8139.c | ||
---|---|---|
3361 | 3361 |
static inline int64_t rtl8139_get_next_tctr_time(RTL8139State *s, int64_t current_time) |
3362 | 3362 |
{ |
3363 | 3363 |
int64_t next_time = current_time + |
3364 |
muldiv64(1, ticks_per_sec, PCI_FREQUENCY);
|
|
3364 |
muldiv64(1, get_ticks_per_sec(), PCI_FREQUENCY);
|
|
3365 | 3365 |
if (next_time <= current_time) |
3366 | 3366 |
next_time = current_time + 1; |
3367 | 3367 |
return next_time; |
... | ... | |
3385 | 3385 |
|
3386 | 3386 |
curr_time = qemu_get_clock(vm_clock); |
3387 | 3387 |
|
3388 |
curr_tick = muldiv64(curr_time - s->TCTR_base, PCI_FREQUENCY, ticks_per_sec); |
|
3388 |
curr_tick = muldiv64(curr_time - s->TCTR_base, PCI_FREQUENCY, |
|
3389 |
get_ticks_per_sec()); |
|
3389 | 3390 |
|
3390 | 3391 |
if (s->TimerInt && curr_tick >= s->TimerInt) |
3391 | 3392 |
{ |
b/hw/sb16.c | ||
---|---|---|
757 | 757 |
freq = s->freq > 0 ? s->freq : 11025; |
758 | 758 |
samples = dsp_get_lohi (s) + 1; |
759 | 759 |
bytes = samples << s->fmt_stereo << (s->fmt_bits == 16); |
760 |
ticks = (bytes * ticks_per_sec) / freq;
|
|
761 |
if (ticks < ticks_per_sec / 1024) {
|
|
760 |
ticks = (bytes * get_ticks_per_sec()) / freq;
|
|
761 |
if (ticks < get_ticks_per_sec() / 1024) {
|
|
762 | 762 |
qemu_irq_raise (s->pic); |
763 | 763 |
} |
764 | 764 |
else { |
b/hw/serial.c | ||
---|---|---|
246 | 246 |
ssp.parity = parity; |
247 | 247 |
ssp.data_bits = data_bits; |
248 | 248 |
ssp.stop_bits = stop_bits; |
249 |
s->char_transmit_time = (ticks_per_sec / speed) * frame_size;
|
|
249 |
s->char_transmit_time = (get_ticks_per_sec() / speed) * frame_size;
|
|
250 | 250 |
qemu_chr_ioctl(s->chr, CHR_IOCTL_SERIAL_SET_PARAMS, &ssp); |
251 | 251 |
#if 0 |
252 | 252 |
printf("speed=%d parity=%c data=%d stop=%d\n", |
... | ... | |
286 | 286 |
We'll be lazy and poll only every 10ms, and only poll it at all if MSI interrupts are turned on */ |
287 | 287 |
|
288 | 288 |
if (s->poll_msl) |
289 |
qemu_mod_timer(s->modem_status_poll, qemu_get_clock(vm_clock) + ticks_per_sec / 100);
|
|
289 |
qemu_mod_timer(s->modem_status_poll, qemu_get_clock(vm_clock) + get_ticks_per_sec() / 100);
|
|
290 | 290 |
} |
291 | 291 |
|
292 | 292 |
static void serial_xmit(void *opaque) |
... | ... | |
695 | 695 |
s->mcr = UART_MCR_OUT2; |
696 | 696 |
s->scr = 0; |
697 | 697 |
s->tsr_retry = 0; |
698 |
s->char_transmit_time = (ticks_per_sec / 9600) * 9;
|
|
698 |
s->char_transmit_time = (get_ticks_per_sec() / 9600) * 9;
|
|
699 | 699 |
s->poll_msl = 0; |
700 | 700 |
|
701 | 701 |
fifo_clear(s,RECV_FIFO); |
b/hw/spitz.c | ||
---|---|---|
392 | 392 |
s->fifopos = 0; |
393 | 393 |
} |
394 | 394 |
|
395 |
qemu_mod_timer(s->kbdtimer, qemu_get_clock(vm_clock) + ticks_per_sec / 32); |
|
395 |
qemu_mod_timer(s->kbdtimer, qemu_get_clock(vm_clock) + |
|
396 |
get_ticks_per_sec() / 32); |
|
396 | 397 |
} |
397 | 398 |
|
398 | 399 |
static void spitz_keyboard_pre_map(SpitzKeyboardState *s) |
b/hw/stellaris.c | ||
---|---|---|
90 | 90 |
tick += (int64_t)count * system_clock_scale; |
91 | 91 |
} else if (s->config == 1) { |
92 | 92 |
/* 32-bit RTC. 1Hz tick. */ |
93 |
tick += ticks_per_sec;
|
|
93 |
tick += get_ticks_per_sec();
|
|
94 | 94 |
} else if (s->mode[n] == 0xa) { |
95 | 95 |
/* PWM mode. Not implemented. */ |
96 | 96 |
} else { |
b/hw/tsc2005.c | ||
---|---|---|
290 | 290 |
s->precision = s->nextprecision; |
291 | 291 |
s->function = s->nextfunction; |
292 | 292 |
s->pdst = !s->pnd0; /* Synchronised on internal clock */ |
293 |
expires = qemu_get_clock(vm_clock) + (ticks_per_sec >> 7);
|
|
293 |
expires = qemu_get_clock(vm_clock) + (get_ticks_per_sec() >> 7);
|
|
294 | 294 |
qemu_mod_timer(s->timer, expires); |
295 | 295 |
} |
296 | 296 |
|
b/hw/tsc210x.c | ||
---|---|---|
864 | 864 |
s->busy = 1; |
865 | 865 |
s->precision = s->nextprecision; |
866 | 866 |
s->function = s->nextfunction; |
867 |
expires = qemu_get_clock(vm_clock) + (ticks_per_sec >> 10);
|
|
867 |
expires = qemu_get_clock(vm_clock) + (get_ticks_per_sec() >> 10);
|
|
868 | 868 |
qemu_mod_timer(s->timer, expires); |
869 | 869 |
} |
870 | 870 |
|
b/hw/tusb6010.c | ||
---|---|---|
523 | 523 |
if (value & TUSB_DEV_OTG_TIMER_ENABLE) |
524 | 524 |
qemu_mod_timer(s->otg_timer, qemu_get_clock(vm_clock) + |
525 | 525 |
muldiv64(TUSB_DEV_OTG_TIMER_VAL(value), |
526 |
ticks_per_sec, TUSB_DEVCLOCK));
|
|
526 |
get_ticks_per_sec(), TUSB_DEVCLOCK));
|
|
527 | 527 |
else |
528 | 528 |
qemu_del_timer(s->otg_timer); |
529 | 529 |
break; |
... | ... | |
763 | 763 |
s->intr_ok = 0; |
764 | 764 |
tusb_intr_update(s); |
765 | 765 |
qemu_mod_timer(s->pwr_timer, |
766 |
qemu_get_clock(vm_clock) + ticks_per_sec / 2);
|
|
766 |
qemu_get_clock(vm_clock) + get_ticks_per_sec() / 2);
|
|
767 | 767 |
} |
768 | 768 |
} |
b/hw/usb-musb.c | ||
---|---|---|
511 | 511 |
ep->intv_timer[dir] = qemu_new_timer(vm_clock, musb_cb_tick, opaque); |
512 | 512 |
|
513 | 513 |
qemu_mod_timer(ep->intv_timer[dir], qemu_get_clock(vm_clock) + |
514 |
muldiv64(timeout, ticks_per_sec, 8000));
|
|
514 |
muldiv64(timeout, get_ticks_per_sec(), 8000));
|
|
515 | 515 |
} |
516 | 516 |
|
517 | 517 |
static void musb_schedule0_cb(USBPacket *packey, void *opaque) |
b/hw/usb-ohci.c | ||
---|---|---|
1669 | 1669 |
|
1670 | 1670 |
if (usb_frame_time == 0) { |
1671 | 1671 |
#ifdef OHCI_TIME_WARP |
1672 |
usb_frame_time = ticks_per_sec;
|
|
1673 |
usb_bit_time = muldiv64(1, ticks_per_sec, USB_HZ/1000);
|
|
1672 |
usb_frame_time = get_ticks_per_sec();
|
|
1673 |
usb_bit_time = muldiv64(1, get_ticks_per_sec(), USB_HZ/1000);
|
|
1674 | 1674 |
#else |
1675 |
usb_frame_time = muldiv64(1, ticks_per_sec, 1000);
|
|
1676 |
if (ticks_per_sec >= USB_HZ) {
|
|
1677 |
usb_bit_time = muldiv64(1, ticks_per_sec, USB_HZ);
|
|
1675 |
usb_frame_time = muldiv64(1, get_ticks_per_sec(), 1000);
|
|
1676 |
if (get_ticks_per_sec() >= USB_HZ) {
|
|
1677 |
usb_bit_time = muldiv64(1, get_ticks_per_sec(), USB_HZ);
|
|
1678 | 1678 |
} else { |
1679 | 1679 |
usb_bit_time = 1; |
1680 | 1680 |
} |
b/hw/usb-uhci.c | ||
---|---|---|
1054 | 1054 |
|
1055 | 1055 |
/* prepare the timer for the next frame */ |
1056 | 1056 |
expire_time = qemu_get_clock(vm_clock) + |
1057 |
(ticks_per_sec / FRAME_TIMER_FREQ);
|
|
1057 |
(get_ticks_per_sec() / FRAME_TIMER_FREQ);
|
|
1058 | 1058 |
qemu_mod_timer(s->frame_timer, expire_time); |
1059 | 1059 |
} |
1060 | 1060 |
|
b/hw/vga.c | ||
---|---|---|
202 | 202 |
|
203 | 203 |
r->total_chars = vtotal_lines * htotal_chars; |
204 | 204 |
if (r->freq) { |
205 |
r->ticks_per_char = ticks_per_sec / (r->total_chars * r->freq);
|
|
205 |
r->ticks_per_char = get_ticks_per_sec() / (r->total_chars * r->freq);
|
|
206 | 206 |
} else { |
207 |
r->ticks_per_char = ticks_per_sec / chars_per_sec;
|
|
207 |
r->ticks_per_char = get_ticks_per_sec() / chars_per_sec;
|
|
208 | 208 |
} |
209 | 209 |
|
210 | 210 |
r->vstart = vretr_start_line; |
... | ... | |
230 | 230 |
"dots = %d\n" |
231 | 231 |
"ticks/char = %lld\n" |
232 | 232 |
"\n", |
233 |
(double) ticks_per_sec / (r->ticks_per_char * r->total_chars),
|
|
233 |
(double) get_ticks_per_sec() / (r->ticks_per_char * r->total_chars),
|
|
234 | 234 |
htotal_chars, |
235 | 235 |
hretr_start_char, |
236 | 236 |
hretr_skew_chars, |
b/hw/wdt_i6300esb.c | ||
---|---|---|
130 | 130 |
timeout <<= 5; |
131 | 131 |
|
132 | 132 |
/* Get the timeout in units of ticks_per_sec. */ |
133 |
timeout = ticks_per_sec * timeout / 33000000;
|
|
133 |
timeout = get_ticks_per_sec() * timeout / 33000000;
|
|
134 | 134 |
|
135 | 135 |
i6300esb_debug("stage %d, timeout %" PRIi64 "\n", d->stage, timeout); |
136 | 136 |
|
b/hw/wdt_ib700.c | ||
---|---|---|
52 | 52 |
|
53 | 53 |
ib700_debug("addr = %x, data = %x\n", addr, data); |
54 | 54 |
|
55 |
timeout = (int64_t) time_map[data & 0xF] * ticks_per_sec;
|
|
55 |
timeout = (int64_t) time_map[data & 0xF] * get_ticks_per_sec();
|
|
56 | 56 |
qemu_mod_timer(timer, qemu_get_clock (vm_clock) + timeout); |
57 | 57 |
} |
58 | 58 |
|
b/monitor.c | ||
---|---|---|
1164 | 1164 |
} |
1165 | 1165 |
/* delayed key up events */ |
1166 | 1166 |
qemu_mod_timer(key_timer, qemu_get_clock(vm_clock) + |
1167 |
muldiv64(ticks_per_sec, hold_time, 1000));
|
|
1167 |
muldiv64(get_ticks_per_sec(), hold_time, 1000));
|
|
1168 | 1168 |
} |
1169 | 1169 |
|
1170 | 1170 |
static int mouse_button_state; |
... | ... | |
1463 | 1463 |
if (total == 0) |
1464 | 1464 |
total = 1; |
1465 | 1465 |
monitor_printf(mon, "async time %" PRId64 " (%0.3f)\n", |
1466 |
dev_time, dev_time / (double)ticks_per_sec);
|
|
1466 |
dev_time, dev_time / (double)get_ticks_per_sec());
|
|
1467 | 1467 |
monitor_printf(mon, "qemu time %" PRId64 " (%0.3f)\n", |
1468 |
qemu_time, qemu_time / (double)ticks_per_sec);
|
|
1468 |
qemu_time, qemu_time / (double)get_ticks_per_sec());
|
|
1469 | 1469 |
qemu_time = 0; |
1470 | 1470 |
dev_time = 0; |
1471 | 1471 |
} |
b/net.c | ||
---|---|---|
2254 | 2254 |
return size; |
2255 | 2255 |
} |
2256 | 2256 |
|
2257 |
ts = muldiv64(qemu_get_clock(vm_clock), 1000000, ticks_per_sec);
|
|
2257 |
ts = muldiv64(qemu_get_clock(vm_clock), 1000000, get_ticks_per_sec());
|
|
2258 | 2258 |
caplen = size > s->pcap_caplen ? s->pcap_caplen : size; |
2259 | 2259 |
|
2260 | 2260 |
hdr.ts.tv_sec = ts / 1000000; |
b/qemu-timer.h | ||
---|---|---|
26 | 26 |
int qemu_timer_pending(QEMUTimer *ts); |
27 | 27 |
int qemu_timer_expired(QEMUTimer *timer_head, int64_t current_time); |
28 | 28 |
|
29 |
extern int64_t ticks_per_sec;
|
|
29 |
int64_t get_ticks_per_sec(void);
|
|
30 | 30 |
|
31 | 31 |
void qemu_get_timer(QEMUFile *f, QEMUTimer *ts); |
32 | 32 |
void qemu_put_timer(QEMUFile *f, QEMUTimer *ts); |
b/target-ppc/kvm_ppc.c | ||
---|---|---|
99 | 99 |
* an idle guest does no IO, qemu's device model will never get a chance to |
100 | 100 |
* run. So, until Qemu gains IO threads, we create this timer to ensure |
101 | 101 |
* that the device model gets a chance to run. */ |
102 |
kvmppc_timer_rate = ticks_per_sec / 10;
|
|
102 |
kvmppc_timer_rate = get_ticks_per_sec() / 10;
|
|
103 | 103 |
kvmppc_timer = qemu_new_timer(vm_clock, &kvmppc_timer_hack, NULL); |
104 | 104 |
qemu_mod_timer(kvmppc_timer, qemu_get_clock(vm_clock) + kvmppc_timer_rate); |
105 | 105 |
} |
b/vl.c | ||
---|---|---|
186 | 186 |
static DisplayState *display_state; |
187 | 187 |
DisplayType display_type = DT_DEFAULT; |
188 | 188 |
const char* keyboard_layout = NULL; |
189 |
int64_t ticks_per_sec; |
|
189 |
static int64_t ticks_per_sec;
|
|
190 | 190 |
ram_addr_t ram_size; |
191 | 191 |
int nb_nics; |
192 | 192 |
NICInfo nd_table[MAX_NICS]; |
... | ... | |
1032 | 1032 |
} |
1033 | 1033 |
} |
1034 | 1034 |
|
1035 |
int64_t get_ticks_per_sec(void) |
|
1036 |
{ |
|
1037 |
return ticks_per_sec; |
|
1038 |
} |
|
1039 |
|
|
1035 | 1040 |
static void init_timers(void) |
1036 | 1041 |
{ |
1037 | 1042 |
init_get_clock(); |
... | ... | |
1110 | 1115 |
delta_cum += delta; |
1111 | 1116 |
if (++count == DISP_FREQ) { |
1112 | 1117 |
printf("timer: min=%" PRId64 " us max=%" PRId64 " us avg=%" PRId64 " us avg_freq=%0.3f Hz\n", |
1113 |
muldiv64(delta_min, 1000000, ticks_per_sec),
|
|
1114 |
muldiv64(delta_max, 1000000, ticks_per_sec),
|
|
1115 |
muldiv64(delta_cum, 1000000 / DISP_FREQ, ticks_per_sec),
|
|
1116 |
(double)ticks_per_sec / ((double)delta_cum / DISP_FREQ));
|
|
1118 |
muldiv64(delta_min, 1000000, get_ticks_per_sec()),
|
|
1119 |
muldiv64(delta_max, 1000000, get_ticks_per_sec()),
|
|
1120 |
muldiv64(delta_cum, 1000000 / DISP_FREQ, get_ticks_per_sec()),
|
|
1121 |
(double)get_ticks_per_sec() / ((double)delta_cum / DISP_FREQ));
|
|
1117 | 1122 |
count = 0; |
1118 | 1123 |
delta_min = INT64_MAX; |
1119 | 1124 |
delta_max = 0; |
Also available in: Unified diff