void kvm_timer_vcpu_terminate(struct kvm_vcpu *vcpu) { struct arch_timer_cpu *timer = &vcpu->arch.timer_cpu; timer_disarm(timer); if (timer->map) kvm_vgic_unmap_phys_irq(vcpu, timer->map); }
/****************************************************** * FunctionName : user_application * Description : 用户APP程序段 * Parameters : none * Returns : none ******************************************************/ void user_application() { timer0_t timer_led; timer_disarm(&timer_led); timer_setfn(&timer_led,(sysTimer0Func)uart_fn,1); timer_arm(&timer_led,1000,Timer_Status_repeat); while(true) { } }
/** * kvm_timer_flush_hwstate - prepare to move the virt timer to the cpu * @vcpu: The vcpu pointer * * Disarm any pending soft timers, since the world-switch code will write the * virtual timer state back to the physical CPU. */ void kvm_timer_flush_hwstate(struct kvm_vcpu *vcpu) { struct arch_timer_cpu *timer = &vcpu->arch.timer_cpu; /* * We're about to run this vcpu again, so there is no need to * keep the background timer running, as we're about to * populate the CPU timer again. */ timer_disarm(timer); }
void reset_state(void) { timer_disarm(0); PRR &= ~_BV(PRTIM0); set_state(STATE_WAIT); }
void kvm_timer_vcpu_terminate(struct kvm_vcpu *vcpu) { struct arch_timer_cpu *timer = &vcpu->arch.timer_cpu; timer_disarm(timer); }
void kvm_timer_unschedule(struct kvm_vcpu *vcpu) { struct arch_timer_cpu *timer = &vcpu->arch.timer_cpu; timer_disarm(timer); }