On Thu, Apr 28, 2011 at 5:24 PM, Ulrich Obergfell <uobergfe@xxxxxxxxxx> wrote: > 'target_get_irq_delivered' and 'target_reset_irq_delivered' contain > entry addresses of functions that are utilized by update_irq() to > detect coalesced interrupts. apic code loads these pointers during > initialization. I'm not so happy with this approach, but probably then the i386 dependencies can be removed from RTC and it can be compiled only once for all targets. > This change can be replaced if a generic feedback infrastructure to > track coalesced IRQs for periodic, clock providing devices becomes > available. > > Signed-off-by: Ulrich Obergfell <uobergfe@xxxxxxxxxx> > --- > Âhw/apic.c |  Â4 ++++ > Âsysemu.h Â|  Â3 +++ > Âvl.c   Â|  Â3 +++ > Â3 files changed, 10 insertions(+), 0 deletions(-) > > diff --git a/hw/apic.c b/hw/apic.c > index a45b57f..eb0f6d9 100644 > --- a/hw/apic.c > +++ b/hw/apic.c > @@ -24,6 +24,7 @@ > Â#include "sysbus.h" > Â#include "trace.h" > Â#include "kvm.h" > +#include "sysemu.h" > > Â/* APIC Local Vector Table */ > Â#define APIC_LVT_TIMER  0 > @@ -1143,6 +1144,9 @@ static SysBusDeviceInfo apic_info = { > > Âstatic void apic_register_devices(void) > Â{ > +  Âtarget_get_irq_delivered = apic_get_irq_delivered; > +  Âtarget_reset_irq_delivered = apic_reset_irq_delivered; > + >   sysbus_register_withprop(&apic_info); > Â} > > diff --git a/sysemu.h b/sysemu.h > index 07d85cd..75b0139 100644 > --- a/sysemu.h > +++ b/sysemu.h > @@ -98,6 +98,9 @@ int qemu_savevm_state_complete(Monitor *mon, QEMUFile *f); > Âvoid qemu_savevm_state_cancel(Monitor *mon, QEMUFile *f); > Âint qemu_loadvm_state(QEMUFile *f); > > +extern int (*target_get_irq_delivered)(void); > +extern void (*target_reset_irq_delivered)(void); > + > Â/* SLIRP */ > Âvoid do_info_slirp(Monitor *mon); > > diff --git a/vl.c b/vl.c > index 0c24e07..7bab315 100644 > --- a/vl.c > +++ b/vl.c > @@ -233,6 +233,9 @@ const char *prom_envs[MAX_PROM_ENVS]; > Âconst char *nvram = NULL; > Âint boot_menu; > > +int (*target_get_irq_delivered)(void) = 0; > +void (*target_reset_irq_delivered)(void) = 0; Instead of initializing with 0 (should be actually NULL in C), please define stub functions, which are used by default. Then the users don't need to check for NULL pointers. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html