(void) self;
(void) selector;
- memcpy(&TEMPLATE_sched_selector, trivial_selector, sizeof(list_sched_selector_t));
+ TEMPLATE_sched_selector = trivial_selector;
TEMPLATE_sched_selector.to_appear_in_schedule = TEMPLATE_to_appear_in_schedule;
return &TEMPLATE_sched_selector;
}
static const list_sched_selector_t *arm_get_list_sched_selector(const void *self, list_sched_selector_t *selector) {
(void) self;
(void) selector;
- memcpy(&arm_sched_selector, reg_pressure_selector, sizeof(list_sched_selector_t));
+ arm_sched_selector = reg_pressure_selector;
arm_sched_selector.to_appear_in_schedule = arm_to_appear_in_schedule;
return &arm_sched_selector;
}
/* Select a scheduler based on backend options */
switch (list_sched_options.select) {
- case BE_SCHED_SELECT_TRIVIAL: sel = *trivial_selector; break;
- case BE_SCHED_SELECT_RANDOM: sel = *random_selector; break;
- case BE_SCHED_SELECT_REGPRESS: sel = *reg_pressure_selector; break;
- case BE_SCHED_SELECT_MUCHNIK: sel = *muchnik_selector; break;
- case BE_SCHED_SELECT_HEUR: sel = *heuristic_selector; break;
- case BE_SCHED_SELECT_NORMAL: sel = *normal_selector; break;
+ case BE_SCHED_SELECT_TRIVIAL: sel = trivial_selector; break;
+ case BE_SCHED_SELECT_RANDOM: sel = random_selector; break;
+ case BE_SCHED_SELECT_REGPRESS: sel = reg_pressure_selector; break;
+ case BE_SCHED_SELECT_MUCHNIK: sel = muchnik_selector; break;
+ case BE_SCHED_SELECT_HEUR: sel = heuristic_selector; break;
+ case BE_SCHED_SELECT_NORMAL: sel = normal_selector; break;
default:
- case BE_SCHED_SELECT_HMUCHNIK: sel = *trivial_selector; break;
+ case BE_SCHED_SELECT_HMUCHNIK: sel = trivial_selector; break;
}
#if 1
/* Select a scheduler based on backend options */
switch (list_sched_options.select) {
- case BE_SCHED_SELECT_TRIVIAL: sel = *trivial_selector; break;
- case BE_SCHED_SELECT_RANDOM: sel = *random_selector; break;
- case BE_SCHED_SELECT_REGPRESS: sel = *reg_pressure_selector; break;
- case BE_SCHED_SELECT_MUCHNIK: sel = *muchnik_selector; break;
- case BE_SCHED_SELECT_HEUR: sel = *heuristic_selector; break;
- case BE_SCHED_SELECT_NORMAL: sel = *normal_selector; break;
+ case BE_SCHED_SELECT_TRIVIAL: sel = trivial_selector; break;
+ case BE_SCHED_SELECT_RANDOM: sel = random_selector; break;
+ case BE_SCHED_SELECT_REGPRESS: sel = reg_pressure_selector; break;
+ case BE_SCHED_SELECT_MUCHNIK: sel = muchnik_selector; break;
+ case BE_SCHED_SELECT_HEUR: sel = heuristic_selector; break;
+ case BE_SCHED_SELECT_NORMAL: sel = normal_selector; break;
default:
- case BE_SCHED_SELECT_HMUCHNIK: sel = *trivial_selector; break;
+ case BE_SCHED_SELECT_HMUCHNIK: sel = trivial_selector; break;
}
/* Assure, that the out edges are computed */
/**
* A trivial selector, that just selects the first ready node.
*/
-extern const list_sched_selector_t *trivial_selector;
+extern const list_sched_selector_t trivial_selector;
-extern const list_sched_selector_t *random_selector;
+extern const list_sched_selector_t random_selector;
/**
* A selector that tries to minimize the register pressure.
* @note Not really operational yet.
*/
-extern const list_sched_selector_t *reg_pressure_selector;
+extern const list_sched_selector_t reg_pressure_selector;
/**
* A selector based on trace scheduling as introduced by Muchnik[TM]
*/
-extern const list_sched_selector_t *muchnik_selector;
+extern const list_sched_selector_t muchnik_selector;
/**
* A selector based on trace scheduling as introduced by Muchnik[TM]
* but using the mueller heuristic selector.
*/
-extern const list_sched_selector_t *heuristic_selector;
+extern const list_sched_selector_t heuristic_selector;
/**
- * A selector based on the strng normal form theorem
+ * A selector based on the strong normal form theorem
*/
-extern const list_sched_selector_t *normal_selector;
+extern const list_sched_selector_t normal_selector;
/**
* List schedule a graph.
}
-static const list_sched_selector_t normal_selector_struct = {
+const list_sched_selector_t normal_selector = {
normal_init_graph,
normal_init_block,
normal_select,
NULL, /* finish_block */
NULL /* finish_graph */
};
-
-const list_sched_selector_t *normal_selector = &normal_selector_struct;
return graph_env;
}
-static const list_sched_selector_t random_selector_struct = {
+const list_sched_selector_t random_selector = {
random_init_graph,
random_init_block,
random_select,
NULL, /* finish_block */
NULL /* finish_graph */
};
-
-const list_sched_selector_t *random_selector = &random_selector_struct;
return res;
}
-static const list_sched_selector_t reg_pressure_selector_struct = {
+const list_sched_selector_t reg_pressure_selector = {
reg_pressure_graph_init,
reg_pressure_block_init,
reg_pressure_select,
reg_pressure_block_free,
free
};
-
-const list_sched_selector_t *reg_pressure_selector = ®_pressure_selector_struct;
return graph_env;
}
-static const list_sched_selector_t muchnik_selector_struct = {
+const list_sched_selector_t muchnik_selector = {
muchnik_init_graph,
muchnik_init_block,
muchnik_select,
trace_free /* finish_graph */
};
-const list_sched_selector_t *muchnik_selector = &muchnik_selector_struct;
-
/**
* Execute the heuristic function.
*/
return cand;
}
-static const list_sched_selector_t heuristic_selector_struct = {
+const list_sched_selector_t heuristic_selector = {
muchnik_init_graph,
muchnik_init_block,
heuristic_select,
NULL, /* finish_block */
trace_free /* finish_graph */
};
-
-const list_sched_selector_t *heuristic_selector = &heuristic_selector_struct;
return graph_env;
}
-static const list_sched_selector_t trivial_selector_struct = {
+const list_sched_selector_t trivial_selector = {
trivial_init_graph,
trivial_init_block,
trivial_select,
NULL, /* finish_block */
NULL /* finish_graph */
};
-
-const list_sched_selector_t *trivial_selector = &trivial_selector_struct;
static const list_sched_selector_t *ppc32_get_list_sched_selector(const void *self, list_sched_selector_t *selector) {
(void) self;
(void) selector;
- memcpy(&ppc32_sched_selector, trivial_selector, sizeof(list_sched_selector_t));
+ ppc32_sched_selector = trivial_selector;
ppc32_sched_selector.to_appear_in_schedule = ppc32_to_appear_in_schedule;
return &ppc32_sched_selector;
}