Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


Added support for SMI interrupt
[palacios-OLD.git] / palacios / include / palacios / vmm_intr.h
index 402d6f9..30bb2b5 100644 (file)
 #define SX_EXCEPTION          0x1e
 
 
-typedef enum {INVALID_INTR, EXTERNAL_IRQ, NMI, EXCEPTION, SOFTWARE, VIRTUAL} intr_type_t;
+typedef enum {INVALID_INTR, EXTERNAL_IRQ, NMI, EXCEPTION, SOFTWARE_INTR, VIRTUAL_INTR} intr_type_t;
 
 struct guest_info;
 
+
+
+/* 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 vm_intr {
 
   /* We need to rework the exception state, to handle stacking */
@@ -45,13 +53,13 @@ struct vm_intr {
 };
 
 
-int raise_irq(struct guest_info * info, int irq, int error_code);
+int raise_irq(struct guest_info * info, int irq);
 int hook_irq(struct guest_info * info, int irq);
 
 struct intr_ctrl_ops {
   int (*intr_pending)(void * private_data);
   int (*get_intr_number)(void * private_data);
-  int (*raise_intr)(void * private_data, int irq, int error_code);
+  int (*raise_intr)(void * private_data, int irq);
   int (*begin_irq)(void * private_data, int irq);
 };