svn commit: r221827 - head/sys/dev/xen/balloon
Alexander Motin
mav at FreeBSD.org
Fri May 13 03:40:17 UTC 2011
Author: mav
Date: Fri May 13 03:40:16 2011
New Revision: 221827
URL: http://svn.freebsd.org/changeset/base/221827
Log:
Fix msleep() usage in Xen balloon driver to not wake up on every HZ tick.
Modified:
head/sys/dev/xen/balloon/balloon.c
Modified: head/sys/dev/xen/balloon/balloon.c
==============================================================================
--- head/sys/dev/xen/balloon/balloon.c Thu May 12 23:26:53 2011 (r221826)
+++ head/sys/dev/xen/balloon/balloon.c Fri May 13 03:40:16 2011 (r221827)
@@ -147,12 +147,6 @@ balloon_retrieve(void)
return page;
}
-static void
-balloon_alarm(void *unused)
-{
- wakeup(balloon_process);
-}
-
static unsigned long
current_target(void)
{
@@ -378,6 +372,8 @@ balloon_process(void *unused)
mtx_lock(&balloon_mutex);
for (;;) {
+ int sleep_time;
+
do {
credit = current_target() - bs.current_pages;
if (credit > 0)
@@ -389,9 +385,12 @@ balloon_process(void *unused)
/* Schedule more work if there is some still to be done. */
if (current_target() != bs.current_pages)
- timeout(balloon_alarm, NULL, ticks + hz);
+ sleep_time = hz;
+ else
+ sleep_time = 0;
- msleep(balloon_process, &balloon_mutex, 0, "balloon", -1);
+ msleep(balloon_process, &balloon_mutex, 0, "balloon",
+ sleep_time);
}
mtx_unlock(&balloon_mutex);
}
@@ -474,9 +473,6 @@ balloon_init(void *arg)
bs.hard_limit = ~0UL;
kproc_create(balloon_process, NULL, NULL, 0, 0, "balloon");
-// init_timer(&balloon_timer);
-// balloon_timer.data = 0;
-// balloon_timer.function = balloon_alarm;
#ifndef XENHVM
/* Initialise the balloon with excess memory space. */
More information about the svn-src-head
mailing list