コード例 #1
0
ファイル: vmm_scheduler.c プロジェクト: nmaiti/xvisor
void vmm_scheduler_timer_event(vmm_timer_event_t * ev)
{
	vmm_vcpu_t * vcpu = sched.current_vcpu;
	if (vcpu) {
		if (!vcpu->preempt_count) {
			vmm_scheduler_next(ev, ev->cpu_regs);
		} else {
			vmm_timer_event_restart(ev);
		}
	} else {
		vmm_scheduler_next(ev, ev->cpu_regs);
	}
}
コード例 #2
0
ファイル: vmm_scheduler.c プロジェクト: HeidCloud/xvisor
static void vmm_scheduler_switch(struct vmm_scheduler_ctrl *schedp,
				 arch_regs_t *regs)
{
	struct vmm_vcpu *vcpu = schedp->current_vcpu;

	if (!regs) {
		/* This should never happen !!! */
		vmm_panic("%s: null pointer to regs.\n", __func__);
	}

	if (vcpu) {
		if (!vcpu->preempt_count) {
			vmm_scheduler_next(schedp, &schedp->ev, regs);
		} else {
			vmm_timer_event_restart(&schedp->ev);
		}
	} else {
		vmm_scheduler_next(schedp, &schedp->ev, regs);
	}
}