{
s_time_t missed_ticks;
+ if ( mode_is(pt->vcpu->domain, no_missed_tick_accounting) )
+ return;
+
if ( pt->one_shot )
return;
return;
missed_ticks = missed_ticks / (s_time_t) pt->period + 1;
- if ( missed_ticks > 1000 )
- {
- /* TODO: Adjust guest time together */
- pt->pending_intr_nr++;
- }
- else
- {
- pt->pending_intr_nr += missed_ticks;
- }
-
+ pt->pending_intr_nr += missed_ticks;
pt->scheduled += missed_ticks * pt->period;
}
list_for_each_entry ( pt, head, list )
{
- if ( !mode_is(v->domain, no_missed_tick_accounting) )
- {
- pt_process_missed_ticks(pt);
- }
- else if ( (NOW() - pt->scheduled) >= 0 )
- {
- pt->pending_intr_nr++;
- pt->scheduled = NOW() + pt->period;
- }
+ pt_process_missed_ticks(pt);
set_timer(&pt->timer, pt->scheduled);
}
pt_lock(pt);
- pt->pending_intr_nr++;
+ if ( mode_is(pt->vcpu->domain, no_missed_tick_accounting) )
+ pt->pending_intr_nr = 1;
+ else
+ pt->pending_intr_nr++;
if ( !pt->one_shot )
{
pt->scheduled += pt->period;
- if ( !mode_is(pt->vcpu->domain, no_missed_tick_accounting) )
- pt_process_missed_ticks(pt);
+ pt_process_missed_ticks(pt);
set_timer(&pt->timer, pt->scheduled);
}