From patchwork Fri Nov 9 13:08:35 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eduardo Habkost X-Patchwork-Id: 198065 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 38B672C030D for ; Sat, 10 Nov 2012 00:46:41 +1100 (EST) Received: from localhost ([::1]:55111 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TWoKO-00056J-9H for incoming@patchwork.ozlabs.org; Fri, 09 Nov 2012 08:08:56 -0500 Received: from eggs.gnu.org ([208.118.235.92]:51472) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TWoJM-0003FM-BL for qemu-devel@nongnu.org; Fri, 09 Nov 2012 08:08:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TWoJF-0004YL-Ch for qemu-devel@nongnu.org; Fri, 09 Nov 2012 08:07:52 -0500 Received: from mx1.redhat.com ([209.132.183.28]:62141) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TWoJE-0004WL-WE for qemu-devel@nongnu.org; Fri, 09 Nov 2012 08:07:45 -0500 Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id qA9D7Ysq008982 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 9 Nov 2012 08:07:34 -0500 Received: from blackpad.lan.raisama.net (vpn1-4-237.gru2.redhat.com [10.97.4.237]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id qA9D7Xd1012829; Fri, 9 Nov 2012 08:07:34 -0500 Received: by blackpad.lan.raisama.net (Postfix, from userid 500) id 01282203417; Fri, 9 Nov 2012 11:08:48 -0200 (BRST) From: Eduardo Habkost To: qemu-devel@nongnu.org Date: Fri, 9 Nov 2012 11:08:35 -0200 Message-Id: <1352466519-5779-21-git-send-email-ehabkost@redhat.com> In-Reply-To: <1352466519-5779-1-git-send-email-ehabkost@redhat.com> References: <1352466519-5779-1-git-send-email-ehabkost@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 209.132.183.28 Cc: peter.maydell@linaro.org, riku.voipio@iki.fi, blauwirbel@gmail.com, Anthony Liguori , Igor Mammedov , =?UTF-8?q?Andreas=20F=C3=A4rber?= Subject: [Qemu-devel] [PATCH 20/24] qdev: add stub vmstate handling to qdev.c X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Add GCC_WEAK vmstate symbols to qdev.c, so that qdev.o can be used without savevm.o (i.e. by *-user). Signed-off-by: Eduardo Habkost --- Originally submitted as: Subject: qdev-core: isolate vmstate handling into separate functions Changes v1 -> v2: - Add GCC_WEAK_DECL to function declarations Changes v2 -> v3: - Make vmstate_register_with_alias_id()/vmstate_unregister() have GCC_WEAK versions, instead of creating a new function - Kept qdev_get_vmsd() inside qdev.c --- hw/qdev.c | 21 +++++++++++++++++++++ vmstate.h | 6 ++++-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/hw/qdev.c b/hw/qdev.c index c242097..fe4de96 100644 --- a/hw/qdev.c +++ b/hw/qdev.c @@ -76,6 +76,27 @@ void qemu_devices_reset(void) } } +/* vmstate register/unregister: + * + * The real implementations are on qdev-system.c and savevm.c. + * Those are weak symbols used by *-user. + */ + +GCC_WEAK int vmstate_register_with_alias_id(DeviceState *dev, + int instance_id, + const VMStateDescription *vmsd, + void *base, int alias_id, + int required_for_version) +{ + return 0; +} + +GCC_WEAK void vmstate_unregister(DeviceState *dev, + const VMStateDescription *vmsd, + void *opaque) +{ +} + const VMStateDescription *qdev_get_vmsd(DeviceState *dev) { DeviceClass *dc = DEVICE_GET_CLASS(dev); diff --git a/vmstate.h b/vmstate.h index 623af0a..7a56b88 100644 --- a/vmstate.h +++ b/vmstate.h @@ -624,11 +624,13 @@ void vmstate_save_state(QEMUFile *f, const VMStateDescription *vmsd, void *opaque); int vmstate_register(DeviceState *dev, int instance_id, const VMStateDescription *vmsd, void *base); -int vmstate_register_with_alias_id(DeviceState *dev, int instance_id, + +/* The following functions have GCC_WEAK stubs on qdev-core, for *-user: */ +GCC_WEAK_DECL int vmstate_register_with_alias_id(DeviceState *dev, int instance_id, const VMStateDescription *vmsd, void *base, int alias_id, int required_for_version); -void vmstate_unregister(DeviceState *dev, const VMStateDescription *vmsd, +GCC_WEAK_DECL void vmstate_unregister(DeviceState *dev, const VMStateDescription *vmsd, void *opaque); struct MemoryRegion;