]> rtime.felk.cvut.cz Git - frescor/frsh.git/commitdiff
Deadline miss notification signals API changed
authorMichal Sojka <sojkam1@fel.cvut.cz>
Mon, 19 Oct 2009 13:29:14 +0000 (15:29 +0200)
committerMichal Sojka <sojkam1@fel.cvut.cz>
Mon, 19 Oct 2009 13:34:09 +0000 (15:34 +0200)
Instead of specifying notification signals before negotiation in
frsh_contract_set_timing_reqs(), new function frsh_vres_set_notification()
was created to specify this before bind (after negotiation).

frsh_api/frsh_contract.c
frsh_api/frsh_thread.c
frsh_api/tests/fwptest/fwpnego.c
frsh_api/tests/negobench.c
frsh_api/tests/negotiation.c
frsh_api/tests/renegobench.c
frsh_api/tests/spare_capacity.c
resources/item/tests/test_item.c

index 607fa38ebf50101d0768576e17c3716659c264ed..32548bdf7bb0a24162cd287510bc84ae12212461 100644 (file)
@@ -249,32 +249,18 @@ int frsh_contract_get_resource_and_label
 int frsh_contract_set_timing_reqs
   (frsh_contract_t *contract,
    const bool                   d_equals_t,
-   const frsh_rel_time_t        *deadline,
-   const frsh_signal_t          budget_overrun_signal,
-   const frsh_signal_info_t     budget_overrun_siginfo,
-   const frsh_signal_t          deadline_miss_signal,
-   const frsh_signal_info_t     deadline_miss_siginfo)
+   const frsh_rel_time_t        *deadline)
 {
        int ret;
-       fres_block_basic *b;
        fres_block_timing_reqs *t;
 
        if (!contract  || !*contract)
                return FRSH_ERR_BAD_ARGUMENT;
 
-        /* deadline and period must be coherent between each other */
-       b = fres_contract_get_basic(*contract);
-
        if ((d_equals_t && deadline != FRSH_NULL_DEADLINE) ||
            (!d_equals_t && (deadline == FRSH_NULL_DEADLINE)))
                return FRSH_ERR_BAD_ARGUMENT;
 
-        /* signal delivery can only be requested for BUONDED workloads */
-       if (b->workload == FRSH_WT_INDETERMINATE &&
-           (deadline_miss_signal != FRSH_NULL_SIGNAL ||
-            budget_overrun_signal != FRSH_NULL_SIGNAL))
-               return FRSH_ERR_BAD_ARGUMENT;
-
        t = malloc(sizeof(*t));
        if (!t) return ENOMEM;
        
@@ -288,12 +274,6 @@ int frsh_contract_set_timing_reqs
                }
        }
 
-       /* Signals are currently ignored by this implementation as
-        * they are better implemented in frsh_thread_bind() */
-       /*t->budget_overrun_signal = budget_overrun_signal;
-       t->budget_overrun_siginfo = budget_overrun_siginfo;
-       t->deadline_miss_signal = deadline_miss_signal;
-       t->deadline_miss_siginfo = deadline_miss_siginfo;*/
        fres_contract_del_timing_reqs(*contract);
        ret = fres_contract_add_timing_reqs(*contract, t);
        if (ret) {
@@ -306,11 +286,7 @@ int frsh_contract_set_timing_reqs
 int frsh_contract_get_timing_reqs
   (const frsh_contract_t *contract,
    bool *d_equals_t,
-   frsh_rel_time_t *deadline,
-   frsh_signal_t *budget_overrun_signal,
-   frsh_signal_info_t *budget_overrun_siginfo,
-   frsh_signal_t *deadline_miss_signal,
-   frsh_signal_info_t *deadline_miss_siginfo)
+   frsh_rel_time_t *deadline)
 {
        fres_block_timing_reqs *t;
 
index 5fa687c38e2ea753d963901ae5db6fc977187dcd..b40407295d4699dfc6810e0338d29f124af8087c 100644 (file)
@@ -288,3 +288,29 @@ int frsh_service_thread_get_data
        return FRSH_ERR_NOT_IMPLEMENTED; 
 }
 
+int frsh_vres_set_notification(
+       frsh_vres_id_t vres,
+       const frsh_signal_t          budget_overrun_signal,
+       const frsh_signal_info_t     budget_overrun_siginfo,
+       const frsh_signal_t          deadline_miss_signal,
+       const frsh_signal_info_t     deadline_miss_siginfo)
+{
+       fres_block_basic *b;
+
+        /* deadline and period must be coherent between each other */
+       b = fres_contract_get_basic(vres->allocated);
+
+        /* signal delivery can only be requested for BUONDED workloads */
+       if (b &&
+           (b->workload == FRSH_WT_INDETERMINATE &&
+            (deadline_miss_signal != FRSH_NULL_SIGNAL ||
+             budget_overrun_signal != FRSH_NULL_SIGNAL)))
+               return FRSH_ERR_BAD_ARGUMENT;
+
+       /* TODO - handle overrun and deadline signals */
+/*     vres->budget_overrun_signal = budget_overrun_signal; */
+/*     vres->budget_overrun_siginfo = budget_overrun_siginfo; */
+/*     vres->deadline_miss_signal = deadline_miss_signal; */
+/*     vres->deadline_miss_siginfo = deadline_miss_siginfo; */
+       return FRSH_ERR_NOT_IMPLEMENTED;
+}
index 043f218117ced68a70d658be9a4be2d1737f3639..493d102e47eb2cb3820cdc1ea876eb2e3e57b261 100644 (file)
@@ -12,7 +12,6 @@ int main(int argc, char *argv[])
        frsh_contract_t contract[N];
        frsh_vres_id_t vres[N];
        frsh_rel_time_t budget, period, deadline;
-       frsh_signal_info_t si;
        int i;
 
        ret = frsh_init();
@@ -40,8 +39,7 @@ int main(int argc, char *argv[])
                if (ret) PERROR_AND_EXIT(ret, "frsh_contract_set_basic_params");
                
                ret = frsh_contract_set_timing_reqs(&contract[i],
-                                                   false, &deadline,
-                                           0, si, 0, si);
+                                                   false, &deadline);
                if (ret) PERROR_AND_EXIT(ret, "frsh_contract_set_timing_reqs");
                
                ret = frsh_contract_negotiate(&contract[i], &vres[i]);
index 36d990b525c61120d8b7ceff48dc17b30c0393b7..481f1dcbf61f0a907fb1f1b388d65c2667091555 100644 (file)
@@ -11,7 +11,6 @@ int main(int argc, char *argv[])
        frsh_contract_t *contract;
        frsh_vres_id_t *vres;
        frsh_rel_time_t budget, period, deadline;
-       frsh_signal_info_t si;
        int i;
 
        if (argc > 1) {
@@ -52,8 +51,7 @@ int main(int argc, char *argv[])
                if (ret) PERROR_AND_EXIT(ret, "frsh_contract_set_basic_params");
                
                ret = frsh_contract_set_timing_reqs(&contract[i],
-                                                   false, &deadline,
-                                           0, si, 0, si);
+                                                   false, &deadline);
                if (ret) PERROR_AND_EXIT(ret, "frsh_contract_set_timing_reqs");
                
                ret = frsh_contract_negotiate(&contract[i], &vres[i]);
index 754018d9e2f0e953b5aedb35e26cf8b42251eea6..aaae86eaae2cdd21422c9a6e265d2e499c661330 100644 (file)
@@ -28,7 +28,6 @@ int main(int argc, char *argv[])
        frsh_contract_t contract[N];
        frsh_vres_id_t vres[N];
        frsh_rel_time_t budget, period, deadline;
-       frsh_signal_info_t si;
        int i;
        char opt;
 
@@ -69,8 +68,7 @@ int main(int argc, char *argv[])
                if (ret) PERROR_AND_EXIT(ret, "frsh_contract_set_basic_params");
                
                ret = frsh_contract_set_timing_reqs(&contract[i],
-                                                   false, &deadline,
-                                           0, si, 0, si);
+                                                   false, &deadline);
                if (ret) PERROR_AND_EXIT(ret, "frsh_contract_set_timing_reqs");
                
                ret = frsh_contract_negotiate(&contract[i], &vres[i]);
index 62b0e6336058cc9dfd627d6671b744acfd660eaf..8ed48ea98609919b1bf150380a7cb504a7628908 100644 (file)
@@ -13,7 +13,6 @@ int main(int argc, char *argv[])
        frsh_contract_t contract[N];
        frsh_vres_id_t vres[N];
        frsh_rel_time_t budget, period, deadline;
-       frsh_signal_info_t si;
        int i;
 
        ret = frsh_init();
@@ -42,8 +41,7 @@ int main(int argc, char *argv[])
                if (ret) PERROR_AND_EXIT(ret, "frsh_contract_set_basic_params");
                
                ret = frsh_contract_set_timing_reqs(&contract[i],
-                                                   false, &deadline,
-                                           0, si, 0, si);
+                                                   false, &deadline);
                if (ret) PERROR_AND_EXIT(ret, "frsh_contract_set_timing_reqs");
                
                ret = frsh_contract_negotiate(&contract[i], &vres[i]);
index f1ccc5a332e5d79eef056b3919cf86df436d4830..0f5761d3a27c2a53817f08676e53724c0ccb7b23 100644 (file)
@@ -45,7 +45,6 @@ int main(int argc, char *argv[])
        int ret;
        frsh_contract_t contract[NUM_CONTRACTS];
        frsh_vres_id_t vres[NUM_CONTRACTS];
-       frsh_signal_info_t si;
        int i, j;
 
        ret = frsh_init();
@@ -70,8 +69,7 @@ int main(int argc, char *argv[])
                                                     FRSH_CT_REGULAR);
                if (ret) PERROR_AND_EXIT(ret, "frsh_contract_set_basic_params");
 
-               ret = frsh_contract_set_timing_reqs(&contract[i], false, &d[i].variants[0].deadline,
-                                           0, si, 0, si);
+               ret = frsh_contract_set_timing_reqs(&contract[i], false, &d[i].variants[0].deadline);
                if (ret) PERROR_AND_EXIT(ret, "frsh_contract_set_timing_reqs");
 
                frsh_utilization_set_t utilization_set = { .size = NUM_VARIANTS };
index 19b2eb9992d5b9f398233e87caa61670096b8415..05e67503d9cebcdc9691fc50564fbecac94c0a57 100644 (file)
@@ -86,7 +86,6 @@ int main(int argc, char *argv[])
        /* Negotiate N contracts */
        for (i=0; i<N; i++) {
                frsh_rel_time_t deadline;
-               frsh_signal_info_t si;
                fres_block_item_nodes *nodes;
                ret = frsh_contract_init(&contract[i]);
                if (ret) PERROR_AND_EXIT(ret, "frsh_contract_init");
@@ -111,8 +110,7 @@ int main(int argc, char *argv[])
                /* Set deadline */
                deadline = fosa_msec_to_rel_time(contract_deadline_sec[i]*1000);
                ret = frsh_contract_set_timing_reqs(&contract[i],
-                                                   false, &deadline,
-                                           0, si, 0, si);
+                                                   false, &deadline);
                if (ret) PERROR_AND_EXIT(ret, "frsh_contract_set_timing_reqs");
 
                /* Negotiate the contract */