-/*\r
- * This file is part of the Palacios Virtual Machine Monitor developed\r
- * by the V3VEE Project with funding from the United States National \r
- * Science Foundation and the Department of Energy. \r
- *\r
- * The V3VEE Project is a joint project between Northwestern University\r
- * and the University of New Mexico. You can find out more at \r
- * http://www.v3vee.org\r
- *\r
- * Copyright (c) 2013, Oscar Mondragon <omondrag@cs.unm.edu>\r
- * Copyright (c) 2013, Patrick G. Bridges <bridges@cs.unm.edu>\r
- * Copyright (c) 2013, The V3VEE Project <http://www.v3vee.org> \r
- * All rights reserved.\r
- *\r
- * Author: Oscar Mondragon <omondrag@cs.unm.edu>\r
- * Patrick G. Bridges <bridges@cs.unm.edu>\r
- *\r
- * This is free software. You are permitted to use,\r
- * redistribute, and modify it as specified in the file "V3VEE_LICENSE".\r
- */\r
-\r
-#ifndef __VMM_SCHEDULER_H__\r
-#define __VMM_SCHEDULER_H__\r
-\r
-struct vm_scheduler_impl {\r
- char *name;\r
- int (*init)();\r
- int (*deinit)();\r
- int (*vm_init)(struct v3_vm_info *vm);\r
- int (*vm_deinit)(struct v3_vm_info *vm);\r
- int (*core_init)(struct guest_info *vm);\r
- int (*core_deinit)(struct guest_info *vm);\r
- void (*schedule)(struct guest_info *vm);\r
- void (*yield)(struct guest_info *vm, int usec);\r
- int (*admit)(struct v3_vm_info *vm);\r
- int (*remap)(struct v3_vm_info *vm);\r
- int (*dvfs)(struct v3_vm_info *vm);\r
-};\r
-\r
-//struct vm_sched_state {\r
-// struct vm_scheduler *sched;\r
-// void *priv_data;\r
-//};\r
-\r
-//struct vm_core_sched_state {\r
-// struct vm_scheduler *sched;\r
-// void *priv_data;\r
-//};\r
-\r
-void v3_schedule(struct guest_info *core);\r
-void v3_yield(struct guest_info *core, int usec);\r
-\r
-int v3_scheduler_register_vm(struct v3_vm_info *vm);\r
-int v3_scheduler_register_core(struct guest_info *vm); /* ? */\r
-int v3_scheduler_admit_vm(struct v3_vm_info *vm);\r
-\r
-void v3_scheduler_remap_notify(struct v3_vm_info *vm);\r
-void v3_scheduler_dvfs_notify(struct v3_vm_info *vm);\r
-\r
-int V3_init_scheduling();\r
-int v3_register_scheduler(struct vm_scheduler_impl *vm);\r
-struct vm_scheduler_impl *v3_scheduler_lookup(char *name);\r
-int V3_enable_scheduler();\r
-\r
-#endif /* __VMM_SCHEDULER_H__ */\r
+/*
+ * 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) 2013, Oscar Mondragon <omondrag@cs.unm.edu>
+ * Copyright (c) 2013, Patrick G. Bridges <bridges@cs.unm.edu>
+ * Copyright (c) 2013, The V3VEE Project <http://www.v3vee.org>
+ * All rights reserved.
+ *
+ * Author: Oscar Mondragon <omondrag@cs.unm.edu>
+ * Patrick G. Bridges <bridges@cs.unm.edu>
+ *
+ * This is free software. You are permitted to use,
+ * redistribute, and modify it as specified in the file "V3VEE_LICENSE".
+ */
+
+#ifndef __VMM_SCHEDULER_H__
+#define __VMM_SCHEDULER_H__
+
+struct vm_scheduler_impl {
+ char *name;
+ int (*init)();
+ int (*deinit)();
+ int (*vm_init)(struct v3_vm_info *vm);
+ int (*vm_deinit)(struct v3_vm_info *vm);
+ int (*core_init)(struct guest_info *core);
+ int (*core_stop)(struct guest_info *core);
+ int (*core_deinit)(struct guest_info *core);
+ void (*schedule)(struct guest_info *vm);
+ void (*yield)(struct guest_info *core, int usec);
+ int (*admit)(struct v3_vm_info *vm);
+ int (*remap)(struct v3_vm_info *vm);
+ int (*dvfs)(struct v3_vm_info *vm);
+ // should really have departure...
+};
+
+int v3_scheduler_register_core(struct guest_info *core);
+int v3_scheduler_stop_core(struct guest_info *core);
+int v3_scheduler_free_core(struct guest_info *core);
+void v3_schedule(struct guest_info *core);
+void v3_yield(struct guest_info *core, int usec);
+
+int v3_scheduler_register_vm(struct v3_vm_info *vm);
+int v3_scheduler_admit_vm(struct v3_vm_info *vm);
+int v3_scheduler_free_vm(struct v3_vm_info *vm);
+
+void v3_scheduler_remap_notify(struct v3_vm_info *vm);
+void v3_scheduler_dvfs_notify(struct v3_vm_info *vm);
+
+int V3_init_scheduling();
+int V3_deinit_scheduling();
+
+int v3_register_scheduler(struct vm_scheduler_impl *vm);
+struct vm_scheduler_impl *v3_scheduler_lookup(char *name);
+struct vm_scheduler_impl *v3_unregister_scheduler(char *name);
+
+int V3_enable_scheduler();
+int V3_disable_scheduler();
+
+#endif /* __VMM_SCHEDULER_H__ */