X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Finclude%2Fpalacios%2Fvmm_intr.h;h=cc3b7c9a5142bf13c73faee5fbfea42db9a65324;hb=7bb4a918835892e9071ffbdef1ea8e57f9a12950;hp=e90d304cee3a212b00839e2b655889b30a471253;hpb=e0519b6111165e0d99987d7f852875366c41bfd9;p=palacios.releases.git diff --git a/palacios/include/palacios/vmm_intr.h b/palacios/include/palacios/vmm_intr.h index e90d304..cc3b7c9 100644 --- a/palacios/include/palacios/vmm_intr.h +++ b/palacios/include/palacios/vmm_intr.h @@ -24,7 +24,7 @@ #ifdef __V3VEE__ #include - +#include #define DE_EXCEPTION 0x00 #define DB_EXCEPTION 0x01 @@ -52,10 +52,6 @@ typedef enum {INVALID_INTR, EXTERNAL_IRQ, NMI, EXCEPTION, SOFTWARE_INTR, VIRTUAL struct guest_info; struct v3_interrupt; -/* We need a way to allow the APIC/PIC to decide when they are supposed to receive interrupts... - * Maybe a notification call when they have been turned on, to deliver irqs to them... - * We can rehook the guest raise_irq op, to the appropriate controller - */ struct v3_irq_hook { @@ -64,6 +60,9 @@ struct v3_irq_hook { }; + + + struct v3_intr_state { /* We need to rework the exception state, to handle stacking */ @@ -72,11 +71,10 @@ struct v3_intr_state { uint_t excp_error_code_valid : 1; uint_t excp_error_code; - struct intr_ctrl_ops * controller; - void * controller_state; + struct list_head controller_list; - /* some way to get the [A]PIC intr */ + /* some way to get the [A]PIC intr */ struct v3_irq_hook * hooks[256]; }; @@ -102,7 +100,7 @@ struct intr_ctrl_ops { -void v3_set_intr_controller(struct guest_info * info, struct intr_ctrl_ops * ops, void * state); +void v3_register_intr_controller(struct guest_info * info, struct intr_ctrl_ops * ops, void * state); int v3_raise_exception(struct guest_info * info, uint_t excp); int v3_raise_exception_with_error(struct guest_info * info, uint_t excp, uint_t error_code);