1 #include <frm_generic.h>
5 #include <fres_sa_scenario.h>
16 int admission_test(struct fres_sa_scenario *scenario, void *priv, bool *schedulable)
18 struct dummy_data *data = priv;
19 struct fres_sa_contract *c;
22 printf("Admission test:\n");
25 fres_sa_scenario_for_each_contract(scenario, c) {
26 fres_block_basic *basic;
27 fres_block_dummy_sched *dummy_sched;
29 fres_contract_id_to_string(id, &c->contract->id, sizeof(id));
30 basic = fres_contract_get_basic(c->contract);
32 if (c->status == FRES_SA_CONTRACT_NEW) {
33 /* Add data for scheduler to the new contracts */
34 dummy_sched = malloc(sizeof(*dummy_sched));
35 if (!dummy_sched) return -1;
36 dummy_sched->priority = 100 - fosa_rel_time_to_msec(basic->budget);
37 ret = fres_contract_add_block(c->contract, FRES_BLOCK_DUMMY_SCHED, dummy_sched);
39 fprintf(stderr, "Cannpt add dummy_sched block\n");
43 dummy_sched = fres_contract_get_block(c->contract, FRES_BLOCK_DUMMY_SCHED);
45 fprintf(stderr, "Dummy_sched is not present\n");
50 printf(" %s contract: id=%s, period=%ld ms, budget=%ld ms, priority=%d\n",
51 c->status == FRES_SA_CONTRACT_NEW ? "new" : "old", id,
52 fosa_rel_time_to_msec(basic->period),
53 fosa_rel_time_to_msec(basic->budget), dummy_sched->priority);
57 *schedulable = scenario->num_contracts <= 3;
58 printf("=> %s\n", *schedulable?"schedulable":"not schedulable");
63 struct dummy_data dummy_data;
65 static const struct fres_res_manager frm = {
66 .res_type = DUMMY_RESOURCE_TYPE,
67 .res_id = DUMMY_RESOURCE_ID,
68 .admission_test = admission_test,
73 int main(int argc, char *argv[])
78 orb = forb_init(&argc, &argv, "frm_dummy");
79 if (!orb) error(1, errno, "forb_init");
81 /* Register fres_block_dummy_sched to contract handling
83 //fres_block_register_dummy();
85 ret = frm_register_and_run(orb, &frm);
88 error(1, errno, "frm_generic_run failed");