]> rtime.felk.cvut.cz Git - frescor/fwp.git/commitdiff
Added resmngr and resched from dummy exapmle
authorMartin <molnam1@fel.cvut.cz>
Fri, 24 Oct 2008 15:14:08 +0000 (17:14 +0200)
committerMartin <molnam1@fel.cvut.cz>
Mon, 27 Oct 2008 10:08:50 +0000 (11:08 +0100)
fwp/mngr/Makefile.omk
fwp/mngr/fwpmngr.c [new file with mode: 0644]
fwp/mngr/fwpsched.c [new file with mode: 0644]

index e95d0fbaa463ca24842b7ee9ebb5047898308b91..9af7d741a91a98a75f7a08ec451fc5896b2d5021 100644 (file)
@@ -3,11 +3,11 @@ CFLAGS += -Wall -D_REENTRANT -g -D_FWP_INTERNALS_
 #fwpagent_SOURCES+= fwp_agent.c 
 #fwpmngr_SOURCES+= fwp_participant.c fwp_mngr.c fwp_contract_table.c\
                  fwp_agent_table.c fwp_admctrl.c
-fwpmngr_SOURCES+= fwp_mngr.c fwp_participant_table.c
+fwpmngr_SOURCES+= fwp_mngr.c 
 fwpmngr_SOURCES+=  fwp_admctrl.c
 fwpmngr_SOURCES+= admtest_utilization.c
-fwpmngr_SOURCES+= gui.c
+#fwpmngr_SOURCES+= gui.c
 
-lib_LOADLIBES+= fwp ulut pthread rt ncurses
+lib_LOADLIBES+= fwp ulut pthread rt
+#lib_LOADLIBES+= fwp ulut pthread rt ncurses
 
-#SUBDIRS=tests
diff --git a/fwp/mngr/fwpmngr.c b/fwp/mngr/fwpmngr.c
new file mode 100644 (file)
index 0000000..066ff02
--- /dev/null
@@ -0,0 +1,67 @@
+#include <frm_generic.h>
+#include <forb.h>
+#include <error.h>
+#include <errno.h>
+#include <fres_sa_scenario.h>
+#include <stdbool.h>
+#include <ul_log.h>
+#include "res_dummy.h"
+#include <stdio.h>
+
+struct dummy_data {
+       int some_data;
+};
+
+
+bool admission_test(struct fres_sa_scenario *scenario, void *priv)
+{
+       bool schedulable;
+       struct dummy_data *data = priv;
+       struct fres_sa_contract *c;
+
+       printf("Admission test:\n");
+       data->some_data++;
+
+       fres_sa_scenario_for_each_contract(scenario, c) {
+               fres_block_basic *basic;
+               char id[40];
+               fres_contract_id_to_string(id, &c->contract->id, sizeof(id));
+               basic = fres_contract_get_basic(c->contract);
+
+               printf("  processing: id=%s, period=%ld ms, budget=%ld ms\n",
+                      id,
+                      fosa_rel_time_to_msec(basic->period),
+                      fosa_rel_time_to_msec(basic->budget));
+
+       }
+       schedulable = scenario->num_contracts <= 3;
+       printf("=> %s\n", schedulable?"schedulable":"not schedulable");
+               
+       return schedulable;
+}
+
+struct dummy_data dummy_data;
+
+static const struct fres_res_manager frm = {
+       .res_type = FRSH_RT_NETWORK,
+       .res_id = FRSH_NETPF_FWP,
+       .admission_test = admission_test,
+       .priv = &dummy_data
+};
+
+int main(int argc, char *argv[])
+{
+       forb_orb orb;
+       int ret;
+
+       orb = forb_init(&argc, &argv, "frm_fwp");
+       if (!orb) error(1, errno, "forb_init");
+
+       ret = frm_register_and_run(orb, &frm);
+
+       if (ret != 0) {
+               error(1, errno, "frm_generic_run");
+       }
+       
+       return 0;
+}
diff --git a/fwp/mngr/fwpsched.c b/fwp/mngr/fwpsched.c
new file mode 100644 (file)
index 0000000..a2a3a6b
--- /dev/null
@@ -0,0 +1,64 @@
+#include <ul_log.h>
+#include <frs_generic.h>
+#include "res_dummy.h"
+#include <stdio.h>
+
+
+UL_LOG_CUST(ulogd_frs_dummy);
+ul_log_domain_t ulogd_frs_dummy = {UL_LOGL_MSG, "frs_dummy"};
+
+int create_vres(fres_vres_t *vres, void *priv)
+{
+       int *my_data = priv;
+       fres_block_basic *basic;
+       char id[40];
+       
+       (*my_data)++;
+
+       fres_contract_id_to_string(id, &vres->contract->id, sizeof(id));
+       basic = fres_contract_get_basic(vres->contract);
+       printf("Creating VRes #%d (id=%s, period=%ld ms, budget=%ld ms)\n",
+              *my_data, id,
+              fosa_rel_time_to_msec(basic->period),
+              fosa_rel_time_to_msec(basic->budget));
+       return 0;
+}
+int cancel_vres(fres_vres_t *vres, void *priv)
+{
+       int *my_data = priv;
+       fres_block_basic *basic;
+       char id[40];
+
+       fres_contract_id_to_string(id, &vres->contract->id, sizeof(id));
+       basic = fres_contract_get_basic(vres->contract);
+       printf("Creating VRes #%d (id=%s, period=%ld ms, budget=%ld ms)\n",
+              *my_data, id,
+              fosa_rel_time_to_msec(basic->period),
+              fosa_rel_time_to_msec(basic->budget));
+
+       (*my_data)--;
+       return 0;
+}
+
+int change_vres(fres_vres_t *vres, void *priv)
+{
+       return 0;
+}
+
+
+
+static int my_data;
+
+static struct fres_scheduler dummy_scheduler = {
+       .res_type = DUMMY_RESOURCE_TYPE,
+       .res_id = DUMMY_RESOURCE_ID,
+       .create_vres = create_vres,
+       .cancel_vres = cancel_vres,
+       .change_vres = change_vres,
+       .priv = &my_data
+};
+
+int frs_dummy_init(forb_orb orb, fres_contract_broker fcb, forb_executor_t *executor)
+{
+       return frs_register(orb, fcb, executor, &dummy_scheduler);
+}