-/* Northwestern University */
-/* (c) 2008, Jack Lange <jarusl@cs.northwestern.edu> */
+/*
+ * This file is part of the Palacios Virtual Machine Monitor developed
+ * by the V3VEE Project with funding from the United States National
+ * Science Foundation and the Department of Energy.
+ *
+ * The V3VEE Project is a joint project between Northwestern University
+ * and the University of New Mexico. You can find out more at
+ * http://www.v3vee.org
+ *
+ * Copyright (c) 2008, Jack Lange <jarusl@cs.northwestern.edu>
+ * Copyright (c) 2008, The V3VEE Project <http://www.v3vee.org>
+ * All rights reserved.
+ *
+ * Author: Jack Lange <jarusl@cs.northwestern.edu>
+ *
+ * This is free software. You are permitted to use,
+ * redistribute, and modify it as specified in the file "V3VEE_LICENSE".
+ */
#include <palacios/vm_dev.h>
#include <palacios/vmm_dev_mgr.h>
#include <palacios/vmm_decoder.h>
-
-#ifndef NULL
-#define NULL 0
+#ifndef DEBUG_DEV_MGR
+#undef PrintDebug
+#define PrintDebug(fmt, args...)
#endif
+
+
int dev_mgr_init(struct guest_info * info) {
struct vmm_dev_mgr * mgr = &(info->dev_mgr);
INIT_LIST_HEAD(&(mgr->dev_list));
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);
}
struct dev_io_hook * dev_mgr_find_io_hook(struct vmm_dev_mgr * mgr, ushort_t port) {
- struct dev_io_hook * tmp;
+ struct dev_io_hook * tmp = NULL;
list_for_each_entry(tmp, &(mgr->io_hooks), mgr_list) {
if (tmp->port == port) {
}
struct dev_io_hook * dev_find_io_hook(struct vm_device * dev, ushort_t port) {
- struct dev_io_hook * tmp;
+ struct dev_io_hook * tmp = NULL;
list_for_each_entry(tmp, &(dev->io_hooks), dev_list) {
if (tmp->port == port) {
+#ifdef DEBUG_DEV_MGR
void PrintDebugDevMgr(struct guest_info * info) {
struct vmm_dev_mgr * mgr = &(info->dev_mgr);
return;
}
+
+#else
+void PrintDebugDevMgr(struct guest_info * info) {}
+void PrintDebugDev(struct vm_device * dev) {}
+void PrintDebugDevMgrIO(struct vmm_dev_mgr * mgr) {}
+void PrintDebugDevIO(struct vm_device * dev) {}
+#endif