* 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>
+ * 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>
PrintError(VM_NONE, VCORE_NONE, "Multiple instances of scheduler (%s)\n", s->name);
return -1;
}
- PrintDebug(VM_NONE, VCORE_NONE,"Registering Scheduler (%s) 2\n", s->name);
-
if (v3_htable_insert(master_scheduler_table,
(addr_t)(s->name),
return -1;
}
- PrintDebug(VM_NONE, VCORE_NONE,"Scheduler registered\n");
return 0;
}
}
int V3_enable_scheduler() {
- /* XXX Lookup the specified scheduler to use for palacios and use it */
- scheduler = v3_scheduler_lookup(default_strategy);
+ char *sched_name;
+
+ scheduler = NULL;
+ sched_name = v3_lookup_option("scheduler");
+
+ if (sched_name) {
+ scheduler = v3_scheduler_lookup(sched_name);
+ }
+
+ if (!scheduler) {
+ scheduler = v3_scheduler_lookup(default_strategy);
+ }
+
if (!scheduler) {
PrintError(VM_NONE, VCORE_NONE,"Specified Palacios scheduler \"%s\" not found.\n", default_strategy);
return -1;
}
+
+ PrintDebug(VM_NONE, VCORE_NONE,"Scheduler %s found",scheduler->name);
+
if (scheduler->init) {
return scheduler->init();
} else {
} else {
V3_Sleep(usec);
}
- yield_start_cycle = (uint64_t) core->sched_priv_data
- + (uint64_t)core->vm_info->sched_priv_data;
- core->sched_priv_data = (void *)yield_start_cycle;
+ if(core){
+ yield_start_cycle = (uint64_t) core->sched_priv_data
+ + (uint64_t)core->vm_info->sched_priv_data;
+ core->sched_priv_data = (void *)yield_start_cycle;
+ }
}