]> rtime.felk.cvut.cz Git - frescor/fwp.git/blob - fwp/mngr/fwp_mngr.c
Admission test adapted to API change
[frescor/fwp.git] / fwp / mngr / fwp_mngr.c
1 #include <frm_generic.h>
2 #include <forb.h>
3 #include <error.h>
4 #include <errno.h>
5 #include <fres_sa_scenario.h>
6 #include <stdbool.h>
7 #include <ul_log.h>
8 #include <frsh_distributed.h>
9 #include "res_dummy.h"
10 #include <stdio.h>
11
12 struct dummy_data {
13         int some_data;
14 };
15
16
17 int admission_test(struct fres_sa_scenario *scenario, void *priv, bool *schedulable)
18 {
19         struct dummy_data *data = priv;
20         struct fres_sa_contract *c;
21
22         printf("Admission test:\n");
23         data->some_data++;
24
25         fres_sa_scenario_for_each_contract(scenario, c) {
26                 fres_block_basic *basic;
27                 char id[40];
28                 fres_contract_id_to_string(id, &c->contract->id, sizeof(id));
29                 basic = fres_contract_get_basic(c->contract);
30
31                 printf("  processing: id=%s, period=%ld ms, budget=%ld ms\n",
32                        id,
33                        fosa_rel_time_to_msec(basic->period),
34                        fosa_rel_time_to_msec(basic->budget));
35
36         }
37         *schedulable = scenario->num_contracts <= 3;
38         printf("=> %s\n", schedulable?"schedulable":"not schedulable");
39                 
40         return 0;
41 }
42
43 struct dummy_data dummy_data;
44
45 static const struct fres_res_manager frm = {
46         .res_type = FRSH_RT_NETWORK,
47         .res_id = FRSH_NETPF_FWP,
48         .admission_test = admission_test,
49         .priv = &dummy_data
50 };
51
52 int main(int argc, char *argv[])
53 {
54         forb_orb orb;
55         int ret;
56
57         orb = forb_init(&argc, &argv, "frm_fwp");
58         if (!orb) error(1, errno, "forb_init");
59
60         ret = frm_register_and_run(orb, &frm);
61
62         if (ret != 0) {
63                 error(1, errno, "frm_generic_run");
64         }
65         
66         return 0;
67 }