From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:52428) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TTAko-0004zb-27 for qemu-devel@nongnu.org; Tue, 30 Oct 2012 08:17:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TTAkh-0004AM-J1 for qemu-devel@nongnu.org; Tue, 30 Oct 2012 08:17:09 -0400 Received: from mail-pb0-f45.google.com ([209.85.160.45]:34944) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TTAkh-000489-CV for qemu-devel@nongnu.org; Tue, 30 Oct 2012 08:17:03 -0400 Received: by mail-pb0-f45.google.com with SMTP id rp2so141356pbb.4 for ; Tue, 30 Oct 2012 05:17:03 -0700 (PDT) Sender: Paolo Bonzini From: Paolo Bonzini Date: Tue, 30 Oct 2012 13:16:33 +0100 Message-Id: <1351599394-24876-5-git-send-email-pbonzini@redhat.com> In-Reply-To: <1351599394-24876-1-git-send-email-pbonzini@redhat.com> References: <1351599394-24876-1-git-send-email-pbonzini@redhat.com> Subject: [Qemu-devel] [PATCH 4/3] ioapic: change pre_save/post_load methods to get/put List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: jan.kiszka@siemens.com, mtosatti@redhat.com, avi@redhat.com, kvm@vger.kernel.org Similar to the APIC, add get/put methods that can be called from common IOAPIC code. Use them already for pre_save/post_load, since they are exact replacements. Signed-off-by: Paolo Bonzini --- hw/ioapic_common.c | 40 +++++++++++++++++++++++++--------------- hw/ioapic_internal.h | 4 ++-- hw/kvm/ioapic.c | 4 ++-- 3 files changed, 29 insertions(+), 19 deletions(-) diff --git a/hw/ioapic_common.c b/hw/ioapic_common.c index 653eef2..1f3ea37 100644 --- a/hw/ioapic_common.c +++ b/hw/ioapic_common.c @@ -23,7 +23,25 @@ #include "ioapic_internal.h" #include "sysbus.h" -void ioapic_reset_common(DeviceState *dev) +static void ioapic_get(IOAPICCommonState *s) +{ + IOAPICCommonClass *info = IOAPIC_COMMON_GET_CLASS(s); + + if (info->get) { + info->get(s); + } +} + +static void ioapic_put(IOAPICCommonState *s) +{ + IOAPICCommonClass *info = IOAPIC_COMMON_GET_CLASS(s); + + if (info->put) { + info->put(s); + } +} + +static void ioapic_reset_common(DeviceState *dev) { IOAPICCommonState *s = IOAPIC_COMMON(dev); int i; @@ -36,24 +54,16 @@ void ioapic_reset_common(DeviceState *dev) } } -static void ioapic_dispatch_pre_save(void *opaque) +static void ioapic_pre_save(void *opaque) { IOAPICCommonState *s = IOAPIC_COMMON(opaque); - IOAPICCommonClass *info = IOAPIC_COMMON_GET_CLASS(s); - - if (info->pre_save) { - info->pre_save(s); - } + ioapic_get(s); } -static int ioapic_dispatch_post_load(void *opaque, int version_id) +static int ioapic_post_load(void *opaque, int version_id) { IOAPICCommonState *s = IOAPIC_COMMON(opaque); - IOAPICCommonClass *info = IOAPIC_COMMON_GET_CLASS(s); - - if (info->post_load) { - info->post_load(s); - } + ioapic_put(s); return 0; } @@ -81,8 +91,8 @@ static const VMStateDescription vmstate_ioapic_common = { .version_id = 3, .minimum_version_id = 1, .minimum_version_id_old = 1, - .pre_save = ioapic_dispatch_pre_save, - .post_load = ioapic_dispatch_post_load, + .pre_save = ioapic_pre_save, + .post_load = ioapic_post_load, .fields = (VMStateField[]) { VMSTATE_UINT8(id, IOAPICCommonState), VMSTATE_UINT8(ioregsel, IOAPICCommonState), diff --git a/hw/ioapic_internal.h b/hw/ioapic_internal.h index e04c9f3..7311ad0 100644 --- a/hw/ioapic_internal.h +++ b/hw/ioapic_internal.h @@ -84,8 +84,8 @@ typedef struct IOAPICCommonState IOAPICCommonState; typedef struct IOAPICCommonClass { SysBusDeviceClass parent_class; void (*init)(IOAPICCommonState *s, int instance_no); - void (*pre_save)(IOAPICCommonState *s); - void (*post_load)(IOAPICCommonState *s); + void (*get)(IOAPICCommonState *s); + void (*put)(IOAPICCommonState *s); } IOAPICCommonClass; struct IOAPICCommonState { diff --git a/hw/kvm/ioapic.c b/hw/kvm/ioapic.c index 6c3b8fe..03cb36c 100644 --- a/hw/kvm/ioapic.c +++ b/hw/kvm/ioapic.c @@ -104,8 +104,8 @@ static void kvm_ioapic_class_init(ObjectClass *klass, void *data) DeviceClass *dc = DEVICE_CLASS(klass); k->init = kvm_ioapic_init; - k->pre_save = kvm_ioapic_get; - k->post_load = kvm_ioapic_put; + k->get = kvm_ioapic_get; + k->put = kvm_ioapic_put; dc->reset = kvm_ioapic_reset; dc->props = kvm_ioapic_properties; } -- 1.7.1