aboutsummaryrefslogtreecommitdiff
path: root/hw/apic_internal.h
diff options
context:
space:
mode:
authorJan Kiszka <jan.kiszka@siemens.com>2011-10-16 12:19:12 +0200
committerJan Kiszka <jan.kiszka@siemens.com>2012-01-19 12:14:40 +0100
commit7a380ca350f84b5b99391da20a2b4ea505b0524d (patch)
treea47120ebc693433afa1a09d9ef217bb8cc777556 /hw/apic_internal.h
parentdae01685280cef9b70ade9167340b5373eada9e8 (diff)
apic: Open-code timer save/restore
To enable migration between accelerated and non-accelerated APIC models, we will need to handle the timer saving and restoring specially and can no longer rely on the automatics of VMSTATE_TIMER. Specifically, accelerated model will not start any QEMUTimer. This patch therefore factors out the generic bits into apic_next_timer and use a post-load callback to implemented model-specific logic. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Diffstat (limited to 'hw/apic_internal.h')
-rw-r--r--hw/apic_internal.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/hw/apic_internal.h b/hw/apic_internal.h
index a7433fb0e6..1db4f061b5 100644
--- a/hw/apic_internal.h
+++ b/hw/apic_internal.h
@@ -92,6 +92,7 @@ struct APICCommonState {
int64_t next_time;
int idx;
QEMUTimer *timer;
+ int64_t timer_expiry;
int sipi_vector;
int wait_for_sipi;
};
@@ -104,9 +105,11 @@ struct APICCommonInfo {
void (*set_base)(APICCommonState *s, uint64_t val);
void (*set_tpr)(APICCommonState *s, uint8_t val);
void (*external_nmi)(APICCommonState *s);
+ void (*post_load)(APICCommonState *s);
};
void apic_report_irq_delivered(int delivered);
void apic_qdev_register(APICCommonInfo *info);
+bool apic_next_timer(APICCommonState *s, int64_t current_time);
#endif /* !QEMU_APIC_INTERNAL_H */