#define _VMM_DEV_MGR
#include <palacios/vmm_types.h>
-#include <palacios/vmm_device_types.h>
#include <palacios/vmm_list.h>
#include <palacios/vmm_string.h>
-
struct vm_device;
struct guest_info;
-struct vm_dev_list {
- struct vm_device * head;
- uint_t num_devs;
-};
-
-
-struct dev_io_hook_list {
- struct dev_io_hook * head;
- uint_t num_hooks;
-};
-
-
-struct dev_mem_hook_list {
- struct dev_mem_hook * head;
- uint_t num_hooks;
-};
+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;
-struct vmm_dev_mgr {
- struct vm_dev_list dev_list;
- struct dev_io_hook_list io_hooks;
- struct dev_mem_hook_list mem_hooks;
};
struct vm_device * dev;
// Do not touch anything below this
- struct dev_io_hook *dev_next, *dev_prev;
- struct dev_io_hook *mgr_next, *mgr_prev;
+
+ struct list_head dev_list;
+ struct list_head mgr_list;
};
struct dev_mem_hook {
- void *addr_start;
- void *addr_end;
+ void *addr_start;
+ void *addr_end;
+
+ struct vm_device * dev;
// Do not touch anything below this
- struct dev_mem_hook *dev_next, *dev_prev;
- struct dev_mem_hook *mgr_next, *mgr_prev;
+ struct list_head dev_list;
+ struct list_head mgr_list;
};
-
// Registration of devices
//
int dev_mgr_remove_device(struct vmm_dev_mgr * mgr, struct vm_device * dev);
+
+
void PrintDebugDevMgr(struct vmm_dev_mgr * mgr);
void PrintDebugDev(struct vm_device * dev);
void PrintDebugDevIO(struct vm_device * dev);