*/
host_ns = qemu_clock_get_ns(QEMU_CLOCK_HOST);
ns_diff = MAX(0, host_ns - tb_remote->time_of_the_day_ns);
- migration_duration_ns = MIN(NSEC_PER_SEC, ns_diff);
- migration_duration_tb = muldiv64(migration_duration_ns, freq, NSEC_PER_SEC);
+ migration_duration_ns = MIN(NANOSECONDS_PER_SECOND, ns_diff);
+ migration_duration_tb = muldiv64(migration_duration_ns, freq,
+ NANOSECONDS_PER_SECOND);
guest_tb = tb_remote->guest_timebase + MIN(0, migration_duration_tb);
tb_off_adj = guest_tb - cpu_get_real_ticks();
assert(rtc);
guest_ns = host_ns + rtc->ns_offset;
- guest_s = guest_ns / NSEC_PER_SEC;
+ guest_s = guest_ns / NANOSECONDS_PER_SECOND;
if (tm) {
gmtime_r(&guest_s, tm);
rtc = SPAPR_RTC(dev);
- rtc->ns_offset = legacy_offset * NSEC_PER_SEC;
+ rtc->ns_offset = legacy_offset * NANOSECONDS_PER_SECOND;
return 0;
}
host_ns = qemu_clock_get_ns(rtc_clock);
- rtc->ns_offset = (new_s * NSEC_PER_SEC) - host_ns;
+ rtc->ns_offset = (new_s * NANOSECONDS_PER_SECOND) - host_ns;
rtas_st(rets, 0, RTAS_OUT_SUCCESS);
}
qemu_get_timedate(&tm, 0);
host_s = mktimegm(&tm);
rtc_ns = qemu_clock_get_ns(rtc_clock);
- rtc->ns_offset = host_s * NSEC_PER_SEC - rtc_ns;
+ rtc->ns_offset = host_s * NANOSECONDS_PER_SECOND - rtc_ns;
object_property_add_tm(OBJECT(rtc), "date", spapr_rtc_qom_date, NULL);
}
#define RTC_REINJECT_ON_ACK_COUNT 20
#define RTC_CLOCK_RATE 32768
-#define UIP_HOLD_LENGTH (8 * NSEC_PER_SEC / 32768)
+#define UIP_HOLD_LENGTH (8 * NANOSECONDS_PER_SECOND / 32768)
#define MC146818_RTC(obj) OBJECT_CHECK(RTCState, (obj), TYPE_MC146818_RTC)
uint64_t guest_rtc;
uint64_t guest_clock = qemu_clock_get_ns(rtc_clock);
- guest_rtc = s->base_rtc * NSEC_PER_SEC
+ guest_rtc = s->base_rtc * NANOSECONDS_PER_SECOND
+ guest_clock - s->last_update + s->offset;
return guest_rtc;
}
return;
}
- guest_nsec = get_guest_rtc_ns(s) % NSEC_PER_SEC;
+ guest_nsec = get_guest_rtc_ns(s) % NANOSECONDS_PER_SECOND;
/* if UF is clear, reprogram to next second */
next_update_time = qemu_clock_get_ns(rtc_clock)
- + NSEC_PER_SEC - guest_nsec;
+ + NANOSECONDS_PER_SECOND - guest_nsec;
/* Compute time of next alarm. One second is already accounted
* for in next_update_time.
*/
next_alarm_sec = get_next_alarm(s);
- s->next_alarm_time = next_update_time + (next_alarm_sec - 1) * NSEC_PER_SEC;
+ s->next_alarm_time = next_update_time +
+ (next_alarm_sec - 1) * NANOSECONDS_PER_SECOND;
if (s->cmos_data[RTC_REG_C] & REG_C_UF) {
/* UF is set, but AF is clear. Program the timer to target
/* if disabling set mode, update the time */
if ((s->cmos_data[RTC_REG_B] & REG_B_SET) &&
(s->cmos_data[RTC_REG_A] & 0x70) <= 0x20) {
- s->offset = get_guest_rtc_ns(s) % NSEC_PER_SEC;
+ s->offset = get_guest_rtc_ns(s) % NANOSECONDS_PER_SECOND;
rtc_set_time(s);
}
}
int64_t guest_nsec;
guest_nsec = get_guest_rtc_ns(s);
- guest_sec = guest_nsec / NSEC_PER_SEC;
+ guest_sec = guest_nsec / NANOSECONDS_PER_SECOND;
gmtime_r(&guest_sec, &ret);
/* Is SET flag of Register B disabled? */
guest_nsec = get_guest_rtc_ns(s);
/* UIP bit will be set at last 244us of every second. */
- if ((guest_nsec % NSEC_PER_SEC) >= (NSEC_PER_SEC - UIP_HOLD_LENGTH)) {
+ if ((guest_nsec % NANOSECONDS_PER_SECOND) >=
+ (NANOSECONDS_PER_SECOND - UIP_HOLD_LENGTH)) {
return 1;
}
return 0;
#include "trace.h"
#define FRAME_TIMER_FREQ 1000
-#define FRAME_TIMER_NS (NSEC_PER_SEC / FRAME_TIMER_FREQ)
+#define FRAME_TIMER_NS (NANOSECONDS_PER_SECOND / FRAME_TIMER_FREQ)
#define UFRAME_TIMER_NS (FRAME_TIMER_NS / 8)
#define NB_MAXINTRATE 8 // Max rate at which controller issues ints
#include "qemu-common.h"
#include "qemu/notify.h"
-#define NSEC_PER_SEC 1000000000LL
+#define NANOSECONDS_PER_SECOND 1000000000LL
/* timers */
fatal("time too big %u\n", curr);
}
for (cnt = 0; ; ) {
- clock_step(1 * NSEC_PER_SEC);
+ clock_step(1 * NANOSECONDS_PER_SECOND);
prev = curr;
curr = in_Timer();
out_IntrStatus(0x4000);
curr = in_Timer();
out_TimerInt(curr + 0.5 * CLK);
- clock_step(1 * NSEC_PER_SEC);
+ clock_step(1 * NANOSECONDS_PER_SECOND);
out_Timer(0);
if ((in_IntrStatus() & 0x4000) == 0) {
fatal("we should have an interrupt here!\n");
out_IntrStatus(0x4000);
curr = in_Timer();
out_TimerInt(curr + 0.5 * CLK);
- clock_step(1 * NSEC_PER_SEC);
+ clock_step(1 * NANOSECONDS_PER_SECOND);
out_TimerInt(0);
if ((in_IntrStatus() & 0x4000) == 0) {
fatal("we should have an interrupt here!\n");
next = curr + 5.0 * CLK;
out_TimerInt(next);
for (cnt = 0; ; ) {
- clock_step(1 * NSEC_PER_SEC);
+ clock_step(1 * NANOSECONDS_PER_SECOND);
prev = curr;
curr = in_Timer();
diff = (curr-prev) & 0xffffffffu;
bkt.level = 1.5;
/* leak an op work of time */
- throttle_leak_bucket(&bkt, NSEC_PER_SEC / 150);
+ throttle_leak_bucket(&bkt, NANOSECONDS_PER_SECOND / 150);
g_assert(bkt.avg == 150);
g_assert(bkt.max == 15);
g_assert(double_cmp(bkt.level, 0.5));
/* leak again emptying the bucket */
- throttle_leak_bucket(&bkt, NSEC_PER_SEC / 150);
+ throttle_leak_bucket(&bkt, NANOSECONDS_PER_SECOND / 150);
g_assert(bkt.avg == 150);
g_assert(bkt.max == 15);
g_assert(double_cmp(bkt.level, 0));
/* check that the bucket level won't go lower */
- throttle_leak_bucket(&bkt, NSEC_PER_SEC / 150);
+ throttle_leak_bucket(&bkt, NANOSECONDS_PER_SECOND / 150);
g_assert(bkt.avg == 150);
g_assert(bkt.max == 15);
g_assert(double_cmp(bkt.level, 0));
bkt.level = 15.5;
wait = throttle_compute_wait(&bkt);
/* time required to do half an operation */
- result = (int64_t) NSEC_PER_SEC / 150 / 2;
+ result = (int64_t) NANOSECONDS_PER_SECOND / 150 / 2;
g_assert(wait == result);
}
static QDict *ib700_program_and_wait(QTestState *s)
{
- clock_step(NSEC_PER_SEC * 40);
+ clock_step(NANOSECONDS_PER_SECOND * 40);
qmp_check_no_event();
/* 2 second limit */
outb(0x443, 14);
/* Ping */
- clock_step(NSEC_PER_SEC);
+ clock_step(NANOSECONDS_PER_SECOND);
qmp_check_no_event();
outb(0x443, 14);
/* Disable */
- clock_step(NSEC_PER_SEC);
+ clock_step(NANOSECONDS_PER_SECOND);
qmp_check_no_event();
outb(0x441, 1);
- clock_step(3 * NSEC_PER_SEC);
+ clock_step(3 * NANOSECONDS_PER_SECOND);
qmp_check_no_event();
/* Enable and let it fire */
outb(0x443, 13);
- clock_step(3 * NSEC_PER_SEC);
+ clock_step(3 * NANOSECONDS_PER_SECOND);
qmp_check_no_event();
- clock_step(2 * NSEC_PER_SEC);
+ clock_step(2 * NANOSECONDS_PER_SECOND);
return qmp_get_event("WATCHDOG");
}
double leak;
/* compute how much to leak */
- leak = (bkt->avg * (double) delta_ns) / NSEC_PER_SEC;
+ leak = (bkt->avg * (double) delta_ns) / NANOSECONDS_PER_SECOND;
/* make the bucket leak */
bkt->level = MAX(bkt->level - leak, 0);
*/
static int64_t throttle_do_compute_wait(double limit, double extra)
{
- double wait = extra * NSEC_PER_SEC;
+ double wait = extra * NANOSECONDS_PER_SECOND;
wait /= limit;
return wait;
}