X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fvmm_dev_mgr.c;h=10c1112c2a2617b2a14732f60333a24a7b5b049f;hb=6eecf583b522147ef13faabb634562f6f23bb712;hp=1d6f35cb29dc25113530ac6098f201ed68fda7d3;hpb=bc2c46a12649344d973e2201271c05390ce924bf;p=palacios.git diff --git a/palacios/src/palacios/vmm_dev_mgr.c b/palacios/src/palacios/vmm_dev_mgr.c index 1d6f35c..10c1112 100644 --- a/palacios/src/palacios/vmm_dev_mgr.c +++ b/palacios/src/palacios/vmm_dev_mgr.c @@ -1,3 +1,7 @@ +/* (c) 2008, Jack Lange */ +/* (c) 2008, The V3VEE Project */ + + #include #include #include @@ -10,8 +14,8 @@ #define NULL 0 #endif -int dev_mgr_init(struct vmm_dev_mgr * mgr) { - +int dev_mgr_init(struct guest_info * info) { + struct vmm_dev_mgr * mgr = &(info->dev_mgr); INIT_LIST_HEAD(&(mgr->dev_list)); mgr->num_devs = 0; @@ -22,10 +26,12 @@ int dev_mgr_init(struct vmm_dev_mgr * mgr) { } -int dev_mgr_deinit(struct vmm_dev_mgr * mgr) { +int dev_mgr_deinit(struct guest_info * info) { struct vm_device * dev; + struct vmm_dev_mgr * mgr = &(info->dev_mgr); + struct vm_device * tmp; - list_for_each_entry(dev, &(mgr->dev_list), dev_link) { + list_for_each_entry_safe(dev, tmp, &(mgr->dev_list), dev_link) { v3_unattach_device(dev); free_device(dev); } @@ -123,10 +129,10 @@ int dev_hook_io(struct vm_device *dev, } - if (v3_hook_io_port(&(dev->vm->io_map), port, - (int (*)(ushort_t, void *, uint_t, void *))read, - (int (*)(ushort_t, void *, uint_t, void *))write, - (void *)dev) == 0) { + if (v3_hook_io_port(dev->vm, port, + (int (*)(ushort_t, void *, uint_t, void *))read, + (int (*)(ushort_t, void *, uint_t, void *))write, + (void *)dev) == 0) { hook->dev = dev; hook->port = port; @@ -157,7 +163,7 @@ int dev_unhook_io(struct vm_device *dev, dev_mgr_remove_io_hook(mgr, hook); dev_remove_io_hook(dev, hook); - return v3_unhook_io_port(&(dev->vm->io_map), port); + return v3_unhook_io_port(dev->vm, port); } @@ -244,7 +250,8 @@ int dev_mgr_unhook_mem(struct vm_device *dev, -void PrintDebugDevMgr(struct vmm_dev_mgr * mgr) { +void PrintDebugDevMgr(struct guest_info * info) { + struct vmm_dev_mgr * mgr = &(info->dev_mgr); struct vm_device * dev; PrintDebug("%d devices registered with manager\n", mgr->num_devs);