/* save a timer */ void qemu_put_timer(QEMUFile *f, QEMUTimer *ts) { uint64_t expire_time; if (qemu_timer_pending(ts)) { expire_time = ts->expire_time; } else { expire_time = -1; } qemu_put_be64(f, expire_time); }
/* When we're in charge of sending, we need to xmit something * before the link timeout expires. */ static void prepare_xmit_timer(struct nfc_re* re, void (*xmit_next_cb)(void*)) { if (!re->xmit_timer) { re->xmit_timer = qemu_new_timer_ms(vm_clock, xmit_next_cb, re); assert(re->xmit_timer); } if (!qemu_timer_pending(re->xmit_timer)) { /* xmit PDU in two seconds */ qemu_mod_timer(re->xmit_timer, qemu_get_clock_ms(vm_clock)+2000); } }
static int update_in_progress(RTCState *s) { int64_t guest_nsec; if (!rtc_running(s)) { return 0; } if (qemu_timer_pending(s->update_timer)) { int64_t next_update_time = qemu_timer_expire_time_ns(s->update_timer); /* Latch UIP until the timer expires. */ if (qemu_get_clock_ns(rtc_clock) >= (next_update_time - UIP_HOLD_LENGTH)) { s->cmos_data[RTC_REG_A] |= REG_A_UIP; return 1; } } 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)) { return 1; } return 0; }
static int qlooptimer_isActive(void* impl) { QEMUTimer* tt = impl; return qemu_timer_pending(tt); }
uint64_t qemu_timer_expire_time_ns(QEMUTimer *ts) { return qemu_timer_pending(ts) ? ts->expire_time : -1; }