From patchwork Tue Jul 24 17:20:53 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Roth X-Patchwork-Id: 173001 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 225EF2C0089 for ; Wed, 25 Jul 2012 04:32:20 +1000 (EST) Received: from localhost ([::1]:53765 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Stju6-00059E-8I for incoming@patchwork.ozlabs.org; Tue, 24 Jul 2012 14:32:18 -0400 Received: from eggs.gnu.org ([208.118.235.92]:49851) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1StioX-0005LS-4i for qemu-devel@nongnu.org; Tue, 24 Jul 2012 13:22:30 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1StioQ-0000be-67 for qemu-devel@nongnu.org; Tue, 24 Jul 2012 13:22:29 -0400 Received: from mail-pb0-f45.google.com ([209.85.160.45]:53639) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1StioQ-0000Fl-0S for qemu-devel@nongnu.org; Tue, 24 Jul 2012 13:22:22 -0400 Received: by mail-pb0-f45.google.com with SMTP id ro12so12773613pbb.4 for ; Tue, 24 Jul 2012 10:22:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references; bh=6WMI24kzzAGiTPgt9OtsIyvpeddCV/+0GeLJRhJC9v8=; b=P38teXfMQrXZxZI+JVDe7SvRjz2Up0phTIPXLiHTDilhlSaTg40WWByvi75yne7AZq LrgFAYnXfzkwd23mflZCqlNPrennh7Qi4qM4dPa4bVX0ARYc+IwsQgZj9MXKuJwI5hqA JuRYuj7m/bO9Aka14L7BvhF338TuA41tLeqXQzLShWX0Vz9016FokFMpFH0ldNHqoLYC fH3uNYqxNn45p/mRFaAj1uutUXei6S+V+z6qsFW1rKlfWDtfSi04nNr9+JsYZEAt582h POSC5SIo7+XHzA5FWP3KquLvIO+RHRMW4IA72P2o6P9q3lPHQMnBBFUZpmBfgfmf3p2i 0sDg== Received: by 10.68.239.103 with SMTP id vr7mr47319786pbc.0.1343150541703; Tue, 24 Jul 2012 10:22:21 -0700 (PDT) Received: from loki.morrigu.org (cpe-72-179-62-111.austin.res.rr.com. [72.179.62.111]) by mx.google.com with ESMTPS id nh8sm12522083pbc.60.2012.07.24.10.22.18 (version=TLSv1/SSLv3 cipher=OTHER); Tue, 24 Jul 2012 10:22:20 -0700 (PDT) From: Michael Roth To: qemu-devel@nongnu.org Date: Tue, 24 Jul 2012 12:20:53 -0500 Message-Id: <1343150454-4677-22-git-send-email-mdroth@linux.vnet.ibm.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1343150454-4677-1-git-send-email-mdroth@linux.vnet.ibm.com> References: <1343150454-4677-1-git-send-email-mdroth@linux.vnet.ibm.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 209.85.160.45 Cc: aliguori@us.ibm.com, quintela@redhat.com, owasserm@redhat.com, yamahata@valinux.co.jp, pbonzini@redhat.com, akong@redhat.com, afaerber@suse.de Subject: [Qemu-devel] [PATCH 21/22] rtc: add QIDL annotations 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 Signed-off-by: Michael Roth --- hw/hw.h | 1 + hw/mc146818rtc.c | 49 ++++++++++++++++++++++++++++++------------------- 2 files changed, 31 insertions(+), 19 deletions(-) diff --git a/hw/hw.h b/hw/hw.h index e5cb9bf..3c3d4f9 100644 --- a/hw/hw.h +++ b/hw/hw.h @@ -12,6 +12,7 @@ #include "irq.h" #include "qemu-file.h" #include "vmstate.h" +#include "qidl.h" #ifdef NEED_CPU_H #if TARGET_LONG_BITS == 64 diff --git a/hw/mc146818rtc.c b/hw/mc146818rtc.c index 3777f85..b200a74 100644 --- a/hw/mc146818rtc.c +++ b/hw/mc146818rtc.c @@ -25,6 +25,7 @@ #include "qemu-timer.h" #include "sysemu.h" #include "mc146818rtc.h" +#include "qidl.h" #ifdef TARGET_I386 #include "apic.h" @@ -47,31 +48,35 @@ #define RTC_REINJECT_ON_ACK_COUNT 20 +QIDL_START(RTCState, state, properties) typedef struct RTCState { - ISADevice dev; - MemoryRegion io; + ISADevice dev QIDL(immutable); + MemoryRegion io QIDL(immutable); uint8_t cmos_data[128]; uint8_t cmos_index; struct tm current_tm; - int32_t base_year; - qemu_irq irq; - qemu_irq sqw_irq; - int it_shift; + int32_t base_year QIDL(property, "base_year", 1980); + qemu_irq irq QIDL(immutable); + qemu_irq sqw_irq QIDL(immutable); + int it_shift QIDL(immutable); /* periodic timer */ QEMUTimer *periodic_timer; int64_t next_periodic_time; /* second update */ int64_t next_second_time; - uint16_t irq_reinject_on_ack_count; + uint16_t irq_reinject_on_ack_count QIDL(broken); uint32_t irq_coalesced; uint32_t period; - QEMUTimer *coalesced_timer; + bool has_coalesced_timer QIDL(immutable); + QEMUTimer *coalesced_timer QIDL(optional); QEMUTimer *second_timer; QEMUTimer *second_timer2; - Notifier clock_reset_notifier; - LostTickPolicy lost_tick_policy; - Notifier suspend_notifier; + Notifier clock_reset_notifier QIDL(broken); + LostTickPolicy lost_tick_policy QIDL(immutable) \ + QIDL(property, "lost_tick_policy", LOST_TICK_DISCARD); + Notifier suspend_notifier QIDL(broken); } RTCState; +QIDL_END(RTCState) static void rtc_set_time(RTCState *s); static void rtc_copy_date(RTCState *s); @@ -615,6 +620,14 @@ static void rtc_get_date(Object *obj, Visitor *v, void *opaque, visit_end_struct(v, errp); } +static void rtc_get_state(Object *obj, Visitor *v, void *opaque, + const char *name, Error **errp) +{ + ISADevice *isa = ISA_DEVICE(obj); + RTCState *s = DO_UPCAST(RTCState, dev, isa); + QIDL_VISIT_TYPE(RTCState, v, &s, name, errp); +} + static int rtc_initfn(ISADevice *dev) { RTCState *s = DO_UPCAST(RTCState, dev, dev); @@ -627,9 +640,11 @@ static int rtc_initfn(ISADevice *dev) rtc_set_date_from_host(dev); + #ifdef TARGET_I386 switch (s->lost_tick_policy) { case LOST_TICK_SLEW: + s->has_coalesced_timer = true; s->coalesced_timer = qemu_new_timer_ns(rtc_clock, rtc_coalesced_timer, s); break; @@ -662,6 +677,9 @@ static int rtc_initfn(ISADevice *dev) object_property_add(OBJECT(s), "date", "struct tm", rtc_get_date, NULL, NULL, s, NULL); + object_property_add(OBJECT(s), "state", "RTCState", + rtc_get_state, NULL, NULL, s, NULL); + QIDL_SCHEMA_ADD_LINK(RTCState, OBJECT(s), "state_schema", NULL); return 0; } @@ -683,13 +701,6 @@ ISADevice *rtc_init(ISABus *bus, int base_year, qemu_irq intercept_irq) return dev; } -static Property mc146818rtc_properties[] = { - DEFINE_PROP_INT32("base_year", RTCState, base_year, 1980), - DEFINE_PROP_LOSTTICKPOLICY("lost_tick_policy", RTCState, - lost_tick_policy, LOST_TICK_DISCARD), - DEFINE_PROP_END_OF_LIST(), -}; - static void rtc_class_initfn(ObjectClass *klass, void *data) { DeviceClass *dc = DEVICE_CLASS(klass); @@ -697,7 +708,7 @@ static void rtc_class_initfn(ObjectClass *klass, void *data) ic->init = rtc_initfn; dc->no_user = 1; dc->vmsd = &vmstate_rtc; - dc->props = mc146818rtc_properties; + dc->props = QIDL_PROPERTIES(RTCState); } static TypeInfo mc146818rtc_info = {