diff options
author | Markus Armbruster <armbru@redhat.com> | 2022-02-22 13:02:07 +0100 |
---|---|---|
committer | Markus Armbruster <armbru@redhat.com> | 2022-02-28 11:39:35 +0100 |
commit | 2beb1e5f9acb443d90fe4d366463f89d32d83bc8 (patch) | |
tree | 3039414c1a58c8778309dd16014befeb882489a7 /hw/rtc | |
parent | 03397528d96ff5d631fd2fa40b753548e53b5149 (diff) | |
download | qemu-2beb1e5f9acb443d90fe4d366463f89d32d83bc8.zip qemu-2beb1e5f9acb443d90fe4d366463f89d32d83bc8.tar.gz qemu-2beb1e5f9acb443d90fe4d366463f89d32d83bc8.tar.bz2 |
rtc: Have event RTC_CHANGE identify the RTC by QOM path
Event RTC_CHANGE is "emitted when the guest changes the RTC time" (and
the RTC supports the event). What if there's more than one RTC?
Which one changed? New @qom-path identifies it.
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <87a6ejnm80.fsf@pond.sub.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Diffstat (limited to 'hw/rtc')
-rw-r--r-- | hw/rtc/mc146818rtc.c | 3 | ||||
-rw-r--r-- | hw/rtc/pl031.c | 3 |
2 files changed, 4 insertions, 2 deletions
diff --git a/hw/rtc/mc146818rtc.c b/hw/rtc/mc146818rtc.c index 57c514e..ac9a60c 100644 --- a/hw/rtc/mc146818rtc.c +++ b/hw/rtc/mc146818rtc.c @@ -611,12 +611,13 @@ static void rtc_get_time(RTCState *s, struct tm *tm) static void rtc_set_time(RTCState *s) { struct tm tm; + g_autofree const char *qom_path = object_get_canonical_path(OBJECT(s)); rtc_get_time(s, &tm); s->base_rtc = mktimegm(&tm); s->last_update = qemu_clock_get_ns(rtc_clock); - qapi_event_send_rtc_change(qemu_timedate_diff(&tm)); + qapi_event_send_rtc_change(qemu_timedate_diff(&tm), qom_path); } static void rtc_set_cmos(RTCState *s, const struct tm *tm) diff --git a/hw/rtc/pl031.c b/hw/rtc/pl031.c index 60167c7..b01d0e7 100644 --- a/hw/rtc/pl031.c +++ b/hw/rtc/pl031.c @@ -138,12 +138,13 @@ static void pl031_write(void * opaque, hwaddr offset, switch (offset) { case RTC_LR: { + g_autofree const char *qom_path = object_get_canonical_path(opaque); struct tm tm; s->tick_offset += value - pl031_get_count(s); qemu_get_timedate(&tm, s->tick_offset); - qapi_event_send_rtc_change(qemu_timedate_diff(&tm)); + qapi_event_send_rtc_change(qemu_timedate_diff(&tm), qom_path); pl031_set_alarm(s); break; |