qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH v2 6/6] suspend: make rtc alarm wakeup the guest.


From: Gerd Hoffmann
Subject: [Qemu-devel] [PATCH v2 6/6] suspend: make rtc alarm wakeup the guest.
Date: Mon, 16 Jan 2012 19:15:15 +0100

Add a 'wakeup' property to the mc146818rtc.  It is on by default.
When enabled the rtc will wake up the guest when the alarm fires.

Signed-off-by: Gerd Hoffmann <address@hidden>
---
 hw/mc146818rtc.c |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/hw/mc146818rtc.c b/hw/mc146818rtc.c
index ae4e16c..039c603 100644
--- a/hw/mc146818rtc.c
+++ b/hw/mc146818rtc.c
@@ -86,6 +86,7 @@ typedef struct RTCState {
     uint8_t cmos_index;
     struct tm current_tm;
     int32_t base_year;
+    uint32_t wakeup;
     qemu_irq irq;
     qemu_irq sqw_irq;
     int it_shift;
@@ -431,6 +432,9 @@ static void rtc_update_second2(void *opaque)
             ((s->cmos_data[RTC_HOURS_ALARM] & 0xc0) == 0xc0 ||
              rtc_from_bcd(s, s->cmos_data[RTC_HOURS_ALARM]) == 
s->current_tm.tm_hour)) {
 
+            if (s->wakeup) {
+                qemu_system_wakeup_request();
+            }
             s->cmos_data[RTC_REG_C] |= 0xa0;
             qemu_irq_raise(s->irq);
         }
@@ -714,6 +718,7 @@ static ISADeviceInfo mc146818rtc_info = {
     .init          = rtc_initfn,
     .qdev.props    = (Property[]) {
         DEFINE_PROP_INT32("base_year", RTCState, base_year, 1980),
+        DEFINE_PROP_UINT32("wakeup",   RTCState, wakeup,    1),
         DEFINE_PROP_END_OF_LIST(),
     }
 };
-- 
1.7.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]