From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:36871) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1R1wxB-0004zs-SI for qemu-devel@nongnu.org; Fri, 09 Sep 2011 05:00:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1R1wxA-0001gP-Kd for qemu-devel@nongnu.org; Fri, 09 Sep 2011 05:00:53 -0400 Received: from mx1.redhat.com ([209.132.183.28]:34152) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1R1wxA-0001gK-Dk for qemu-devel@nongnu.org; Fri, 09 Sep 2011 05:00:52 -0400 From: Amit Shah Date: Fri, 9 Sep 2011 14:30:39 +0530 Message-Id: <7d472e560b452ffba3f75ae364c2db709f7fab2d.1315558826.git.amit.shah@redhat.com> Subject: [Qemu-devel] [PATCH 1/2] balloon: Disassociate handlers from balloon device on unplug List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu list Cc: Amit Shah , Markus Armbruster When a balloon device gets unplugged, allow the balloon handlers to be freed. Signed-off-by: Amit Shah --- balloon.c | 10 ++++++++++ balloon.h | 1 + 2 files changed, 11 insertions(+), 0 deletions(-) diff --git a/balloon.c b/balloon.c index f56fdc1..a2133db 100644 --- a/balloon.c +++ b/balloon.c @@ -52,6 +52,16 @@ int qemu_add_balloon_handler(QEMUBalloonEvent *event_func, return 0; } +void qemu_remove_balloon_handler(void *opaque) +{ + if (balloon_opaque != opaque) { + return; + } + balloon_event_fn = NULL; + balloon_stat_fn = NULL; + balloon_opaque = NULL; +} + static int qemu_balloon(ram_addr_t target) { if (!balloon_event_fn) { diff --git a/balloon.h b/balloon.h index 3df14e6..f59e288 100644 --- a/balloon.h +++ b/balloon.h @@ -22,6 +22,7 @@ typedef void (QEMUBalloonStatus)(void *opaque, MonitorCompletion cb, int qemu_add_balloon_handler(QEMUBalloonEvent *event_func, QEMUBalloonStatus *stat_func, void *opaque); +void qemu_remove_balloon_handler(void *opaque); void monitor_print_balloon(Monitor *mon, const QObject *data); int do_info_balloon(Monitor *mon, MonitorCompletion cb, void *opaque); -- 1.7.6