#include <palacios/vmm_types.h>
#include <palacios/vmm_list.h>
#include <palacios/vmm_string.h>
+#include <palacios/vmm_hashtable.h>
struct vm_device;
struct guest_info;
-
struct vmm_dev_mgr {
uint_t num_devs;
struct list_head dev_list;
- uint_t num_io_hooks;
- struct list_head io_hooks;
-
- uint_t num_mem_hooks;
- struct list_head mem_hooks;
-
- uint_t num_msr_hook;
- struct list_head msr_hooks;
-
+ struct hashtable * dev_table;
};
// when the guest is stopped
//
-int v3_attach_device(struct guest_info *vm, struct vm_device * dev);
-int v3_unattach_device(struct vm_device *dev);
-
-
-
-
-
-
-struct dev_io_hook {
- ushort_t port;
-
- int (*read)(ushort_t port, void * dst, uint_t length, struct vm_device * dev);
- int (*write)(ushort_t port, void * src, uint_t length, struct vm_device * dev);
-
- struct vm_device * dev;
-
- // Do not touch anything below this
-
- struct list_head dev_list;
- struct list_head mgr_list;
-};
-
-struct dev_mem_hook {
- void *addr_start;
- void *addr_end;
-
- struct vm_device * dev;
-
- // Do not touch anything below this
- struct list_head dev_list;
- struct list_head mgr_list;
-};
+int v3_attach_device(struct guest_info * vm, struct vm_device * dev);
+int v3_detach_device(struct vm_device * dev);
int v3_init_dev_mgr(struct guest_info * info);
void PrintDebugDevMgr(struct guest_info * info);
void PrintDebugDev(struct vm_device * dev);
-void PrintDebugDevIO(struct vm_device * dev);
-void PrintDebugDevMgrIO(struct vmm_dev_mgr * mgr);
#endif // ! __V3VEE__