From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Np0Wn-0006nA-If for qemu-devel@nongnu.org; Tue, 09 Mar 2010 09:35:21 -0500 Received: from [199.232.76.173] (port=44126 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Np0Wm-0006mN-MA for qemu-devel@nongnu.org; Tue, 09 Mar 2010 09:35:20 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1Np0NH-0006w5-Ir for qemu-devel@nongnu.org; Tue, 09 Mar 2010 09:25:33 -0500 Received: from mail-qy0-f190.google.com ([209.85.221.190]:60216) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1Np0NH-0006pt-Az for qemu-devel@nongnu.org; Tue, 09 Mar 2010 09:25:31 -0500 Received: by mail-qy0-f190.google.com with SMTP id 28so7483775qyk.14 for ; Tue, 09 Mar 2010 06:25:31 -0800 (PST) Message-ID: <4B965A57.5040401@codemonkey.ws> Date: Tue, 09 Mar 2010 08:25:27 -0600 From: Anthony Liguori MIME-Version: 1.0 Subject: Re: [Qemu-devel] [PATCH] QMP: Introduce RTC_CHANGE event References: <20100225121144.10d30251@redhat.com> In-Reply-To: <20100225121144.10d30251@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Luiz Capitulino Cc: qemu-devel@nongnu.org On 02/25/2010 09:11 AM, Luiz Capitulino wrote: > Emitted whenever the RTC time changes. > > Signed-off-by: Luiz Capitulino > Applied. Thanks. Regards, Anthony Liguori > --- > QMP/qmp-events.txt | 15 +++++++++++++++ > hw/mc146818rtc.c | 2 ++ > monitor.c | 3 +++ > monitor.h | 1 + > sysemu.h | 2 ++ > vl.c | 9 +++++++++ > 6 files changed, 32 insertions(+), 0 deletions(-) > > diff --git a/QMP/qmp-events.txt b/QMP/qmp-events.txt > index b0183f9..f64b42d 100644 > --- a/QMP/qmp-events.txt > +++ b/QMP/qmp-events.txt > @@ -38,6 +38,21 @@ Example: > { "event": "RESET", > "timestamp": { "seconds": 1267041653, "microseconds": 9518 } } > > +RTC_CHANGE > +---------- > + > +Emitted when the RTC time changes. > + > +Data: > + > +- "offset": delta against the host UTC in seconds (json-number) > + > +Example: > + > +{ "event": "RTC_CHANGE", > + "data": { "offset": 78 }, > + "timestamp": { "seconds": 1267020223, "microseconds": 435656 } } > + > SHUTDOWN > -------- > > diff --git a/hw/mc146818rtc.c b/hw/mc146818rtc.c > index 2616d0d..a537855 100644 > --- a/hw/mc146818rtc.c > +++ b/hw/mc146818rtc.c > @@ -297,6 +297,8 @@ static void rtc_set_time(RTCState *s) > tm->tm_mday = rtc_from_bcd(s, s->cmos_data[RTC_DAY_OF_MONTH]); > tm->tm_mon = rtc_from_bcd(s, s->cmos_data[RTC_MONTH]) - 1; > tm->tm_year = rtc_from_bcd(s, s->cmos_data[RTC_YEAR]) + s->base_year - 1900; > + > + rtc_change_mon_event(tm); > } > > static void rtc_copy_date(RTCState *s) > diff --git a/monitor.c b/monitor.c > index b2f5842..20512da 100644 > --- a/monitor.c > +++ b/monitor.c > @@ -423,6 +423,9 @@ void monitor_protocol_event(MonitorEvent event, QObject *data) > case QEVENT_BLOCK_IO_ERROR: > event_name = "BLOCK_IO_ERROR"; > break; > + case QEVENT_RTC_CHANGE: > + event_name = "RTC_CHANGE"; > + break; > default: > abort(); > break; > diff --git a/monitor.h b/monitor.h > index 8cc21f5..aa51bd5 100644 > --- a/monitor.h > +++ b/monitor.h > @@ -23,6 +23,7 @@ typedef enum MonitorEvent { > QEVENT_VNC_INITIALIZED, > QEVENT_VNC_DISCONNECTED, > QEVENT_BLOCK_IO_ERROR, > + QEVENT_RTC_CHANGE, > QEVENT_MAX, > } MonitorEvent; > > diff --git a/sysemu.h b/sysemu.h > index 8ba618e..b5587f4 100644 > --- a/sysemu.h > +++ b/sysemu.h > @@ -252,6 +252,8 @@ void do_usb_add(Monitor *mon, const QDict *qdict); > void do_usb_del(Monitor *mon, const QDict *qdict); > void usb_info(Monitor *mon); > > +void rtc_change_mon_event(struct tm *tm); > + > void register_devices(void); > > #endif > diff --git a/vl.c b/vl.c > index 3f580f5..6c05c93 100644 > --- a/vl.c > +++ b/vl.c > @@ -1488,6 +1488,15 @@ int qemu_timedate_diff(struct tm *tm) > return seconds - time(NULL); > } > > +void rtc_change_mon_event(struct tm *tm) > +{ > + QObject *data; > + > + data = qobject_from_jsonf("{ 'offset': %d }", qemu_timedate_diff(tm)); > + monitor_protocol_event(QEVENT_RTC_CHANGE, data); > + qobject_decref(data); > +} > + > static void configure_rtc_date_offset(const char *startdate, int legacy) > { > time_t rtc_start_date; >