1 #include <frm_generic.h>
5 #include <fres_sa_scenario.h>
15 int admission_test(struct fres_sa_scenario *scenario, void *priv, bool *schedulable)
17 struct dummy_data *data = priv;
18 struct fres_sa_contract *c;
21 printf("Admission test:\n");
24 fres_sa_scenario_for_each_contract(scenario, c) {
25 fres_block_basic *basic;
26 fres_block_dummy_sched *dummy_sched;
28 fres_contract_id_to_string(id, &c->id, sizeof(id));
29 basic = fres_contract_get_basic(c->contract);
31 if (c->contract == c->new) {
32 /* Add data for scheduler to the new contracts */
33 dummy_sched = malloc(sizeof(*dummy_sched));
34 if (!dummy_sched) return -1;
35 dummy_sched->priority = 100 - fosa_rel_time_to_msec(basic->budget);
36 ret = fres_contract_add_block(c->contract, FRES_BLOCK_DUMMY_SCHED, dummy_sched);
38 fprintf(stderr, "Cannpt add dummy_sched block\n");
42 dummy_sched = fres_contract_get_block(c->contract, FRES_BLOCK_DUMMY_SCHED);
44 fprintf(stderr, "Dummy_sched is not present\n");
49 printf(" %s contract: id=%s, period=%ld ms, budget=%ld ms, priority=%d\n",
50 c->contract == c->new ? "new" : "old", id,
51 fosa_rel_time_to_msec(basic->period),
52 fosa_rel_time_to_msec(basic->budget), dummy_sched->priority);
56 *schedulable = scenario->num_contracts <= 3;
57 printf("=> %s\n", *schedulable?"schedulable":"not schedulable");
62 struct dummy_data dummy_data;
64 static const struct fres_res_manager frm = {
65 .res_type = DUMMY_RESOURCE_TYPE,
66 .res_id = DUMMY_RESOURCE_ID,
67 .admission_test = admission_test,
72 int main(int argc, char *argv[])
77 orb = forb_init(&argc, &argv, "frm_dummy");
78 if (!orb) error(1, errno, "forb_init");
80 /* Register fres_block_dummy_sched to contract handling
82 fres_block_register_dummy();
84 ret = frm_register_and_run(orb, &frm);
87 error(1, errno, "frm_generic_run failed");