aboutsummaryrefslogtreecommitdiffstats
path: root/xen/common/timer.c
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2008-12-04 14:12:08 +0000
committerKeir Fraser <keir.fraser@citrix.com>2008-12-04 14:12:08 +0000
commit7e3e35eed67b3b3d8be8facfb557aa4d0e38e68f (patch)
treecfe9ef62a88b478937a97555abff955017c9c063 /xen/common/timer.c
parent2d27786f064b190fc3134af73431db713ec439cc (diff)
downloadxen-7e3e35eed67b3b3d8be8facfb557aa4d0e38e68f.tar.gz
xen-7e3e35eed67b3b3d8be8facfb557aa4d0e38e68f.tar.bz2
xen-7e3e35eed67b3b3d8be8facfb557aa4d0e38e68f.zip
Fix one timer range issue
According to the timer sematic, the timer can be executed at any timer within [expires, expires_end], however, current implementation only allow timer to be executed after expires_end, which is not conform to the timer semantics. This patch fix the the SPECpower score regression (~5% downgrade) introduced by changeset 18744 "Change timer implementation to allow variable 'slop'" Signed-off-by: Yu Ke <ke.yu@intel.com>
Diffstat (limited to 'xen/common/timer.c')
-rw-r--r--xen/common/timer.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/xen/common/timer.c b/xen/common/timer.c
index 97496dc5ac..d5f08d370f 100644
--- a/xen/common/timer.c
+++ b/xen/common/timer.c
@@ -396,7 +396,7 @@ static void timer_softirq_action(void)
/* Execute ready heap timers. */
while ( (GET_HEAP_SIZE(heap) != 0) &&
- ((t = heap[1])->expires_end < now) )
+ ((t = heap[1])->expires < now) )
{
remove_from_heap(heap, t);
t->status = TIMER_STATUS_inactive;
@@ -404,7 +404,7 @@ static void timer_softirq_action(void)
}
/* Execute ready list timers. */
- while ( ((t = ts->list) != NULL) && (t->expires_end < now) )
+ while ( ((t = ts->list) != NULL) && (t->expires < now) )
{
ts->list = t->list_next;
t->status = TIMER_STATUS_inactive;