static void kvm_pit_reset(DeviceState *dev) { PITCommonState *s = PIT_COMMON(dev); pit_reset_common(s); kvm_pit_put(s); }
static void kvm_pit_irq_control(void *opaque, int n, int enable) { PITCommonState *pit = opaque; PITChannelState *s = &pit->channels[0]; kvm_pit_get(pit); s->irq_disabled = !enable; kvm_pit_put(pit); }
static void kvm_pit_vm_state_change(void *opaque, int running, RunState state) { KVMPITState *s = opaque; if (running) { kvm_pit_update_clock_offset(s); kvm_pit_put(PIT_COMMON(s)); s->vm_stopped = false; } else { kvm_pit_update_clock_offset(s); kvm_pit_get(PIT_COMMON(s)); s->vm_stopped = true; } }
static void kvm_pit_set_gate(PITCommonState *s, PITChannelState *sc, int val) { kvm_pit_get(s); switch (sc->mode) { default: case 0: case 4: /* XXX: just disable/enable counting */ break; case 1: case 2: case 3: case 5: if (sc->gate < val) { /* restart counting on rising edge */ sc->count_load_time = qemu_get_clock_ns(vm_clock); } break; } sc->gate = val; kvm_pit_put(s); }