summaryrefslogtreecommitdiff
path: root/balloon.c
diff options
context:
space:
mode:
Diffstat (limited to 'balloon.c')
-rw-r--r--balloon.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/balloon.c b/balloon.c
index a938475270..5200565cb2 100644
--- a/balloon.c
+++ b/balloon.c
@@ -36,12 +36,20 @@ static QEMUBalloonEvent *balloon_event_fn;
static QEMUBalloonStatus *balloon_stat_fn;
static void *balloon_opaque;
-void qemu_add_balloon_handler(QEMUBalloonEvent *event_func,
- QEMUBalloonStatus *stat_func, void *opaque)
+int qemu_add_balloon_handler(QEMUBalloonEvent *event_func,
+ QEMUBalloonStatus *stat_func, void *opaque)
{
+ if (balloon_event_fn || balloon_stat_fn || balloon_opaque) {
+ /* We're already registered one balloon handler. How many can
+ * a guest really have?
+ */
+ error_report("Another balloon device already registered");
+ return -1;
+ }
balloon_event_fn = event_func;
balloon_stat_fn = stat_func;
balloon_opaque = opaque;
+ return 0;
}
static int qemu_balloon(ram_addr_t target)