#ifdef __V3VEE__
-#include <palacios/vm_dev.h>
+#include <palacios/vmm_dev_mgr.h>
-struct vm_device * v3_create_apic();
+
+typedef enum {IPI_FIXED = 0,
+ IPI_LOWEST_PRIO = 1,
+ IPI_SMI = 2,
+ IPI_NMI = 4,
+ IPI_INIT = 5,
+ IPI_EXINT = 7 } ipi_mode_t;
+
+
+struct v3_gen_ipi {
+ uint8_t vector;
+ ipi_mode_t mode;
+
+ uint8_t logical : 1;
+ uint8_t trigger_mode : 1;
+ uint8_t dst_shorthand : 2;
+
+ uint8_t dst;
+} __attribute__((packed));
+
+int v3_apic_send_ipi(struct v3_vm_info * vm, struct v3_gen_ipi * ipi, void * dev_data);
+
+int v3_apic_raise_intr(struct v3_vm_info * vm,
+ uint32_t irq, uint32_t dst,
+ void * dev_data);
-int v3_apic_raise_intr(struct vm_device * apic_dev, int intr_num);
#endif // ! __V3VEE__