From: sangorrin Date: Thu, 20 Nov 2008 10:45:40 +0000 (+0000) Subject: changes until i get bwres_negotiate_in_slave and in_master work... TODO: test more... X-Git-Url: https://rtime.felk.cvut.cz/gitweb/frescor/fna.git/commitdiff_plain/0abc21283add61421dbc58d7ef12cec551af7afe changes until i get bwres_negotiate_in_slave and in_master work... TODO: test more things, spare capacity... (for sure there are errors and things missing) and also add the reserve&commit (only the architecture is designed) git-svn-id: http://www.frescor.org/private/svn/frescor/fna/trunk@1405 35b4ef3e-fd22-0410-ab77-dab3279adceb --- diff --git a/src/fna_configuration.c b/src/fna_configuration.c index ed32317..656f9c6 100644 --- a/src/fna_configuration.c +++ b/src/fna_configuration.c @@ -88,15 +88,15 @@ #endif fna_operations_t *fna_operations[FNA_MAX_NETWORKS] = { -#ifdef RTEP_FNA_ENABLED - &rtep_fna_operations, +#ifdef FRESCAN_FNA_ENABLED + &frescan_fna_operations, #else NULL, #endif -#ifdef FRESCAN_FNA_ENABLED - &frescan_fna_operations, +#ifdef RTEP_FNA_ENABLED + &rtep_fna_operations, #else - NULL, + NULL, #endif #ifdef UNIX_FNA_ENABLED &unix_fna_operations, diff --git a/src_frescan/frescan_bwres.c b/src_frescan/frescan_bwres.c index 23bc3c9..b3d0299 100644 --- a/src_frescan/frescan_bwres.c +++ b/src_frescan/frescan_bwres.c @@ -64,6 +64,7 @@ * */ +#include "frsh.h" #include "frescan_bwres.h" #include "frescan_bwres_requests.h" #include "frescan_bwres_robjs.h" @@ -84,29 +85,74 @@ int frescan_bwres_init(frescan_network_t net) { int ret; - frescan_server_params_t server_params; // TODO: improve this... - frescan_bwres_sa_init_params_t init_params; // TODO: improve this... + frescan_node_t node; + frescan_ss_t neg_msg_ss_id; + frescan_server_params_t server_params; + frescan_bwres_sa_init_params_t init_params; + frsh_contract_t neg_msgs_contract; + frsh_rel_time_t neg_msgs_budget; + frsh_rel_time_t neg_msgs_period; - init_params.max_prio = 30; - init_params.min_prio = 1; + init_params.min_prio = FRESCAN_BWRES_SS_MIN_PRIO; + init_params.max_prio = FRESCAN_BWRES_SS_MAX_PRIO; if (frescan_data[net].local_node == FRESCAN_BWRES_MASTER_NODE) { ret = frescan_bwres_sa_init(&frescan_data[net].scenario, &init_params); if (ret != 0) return ret; + + // Add contracts for the negotiation messages + ret = frsh_contract_init(&neg_msgs_contract); + if (ret != 0) return ret; + + neg_msgs_budget = frsh_usec_to_rel_time( + (long)FRESCAN_FRAME_TX_TIME_US * + FRESCAN_BWRES_NEG_MSG_BUDGET); + neg_msgs_period = frsh_usec_to_rel_time( + (long)FRESCAN_BWRES_NEG_MSG_PERIOD); + ret = frsh_contract_set_preemption_level + (&neg_msgs_contract, + FRESCAN_BWRES_NEG_MSG_PRIO); + if (ret != 0) return ret; + + ret = frsh_contract_set_basic_params(&neg_msgs_contract, + &neg_msgs_budget, + &neg_msgs_period, + FRSH_WT_INDETERMINATE, + FRSH_CT_REGULAR); + if (ret != 0) return ret; + + for(node=0; nodetype = FRESCAN_BWRES_REQ_GN; req_data->req = req; req_data->request_node = frescan_data[net].local_node; - req_data->contracts_to_neg = (frsh_contracts_group_t *) - contracts_to_neg; - req_data->contracts_to_reneg = (frsh_contracts_group_t *) - contracts_to_reneg; - req_data->ss_to_reneg = (frescan_ss_group_t *)ss_to_reneg; - req_data->ss_to_cancel = (frescan_ss_group_t *)ss_to_cancel; - req_data->ss_new = ss_new; + + if (contracts_to_neg == NULL) { + req_data->contracts_to_neg = &req_data->contracts_to_neg_data; + req_data->contracts_to_neg->size = 0; + } else { + req_data->contracts_to_neg = + (frsh_contracts_group_t *)contracts_to_neg; + } + + if (contracts_to_reneg == NULL) { + req_data->contracts_to_reneg = &req_data-> + contracts_to_reneg_data; + req_data->contracts_to_reneg->size = 0; + } else { + req_data->contracts_to_reneg = (frsh_contracts_group_t *) + contracts_to_reneg; + } + + if (ss_to_reneg == NULL) { + req_data->ss_to_reneg = &req_data->ss_to_reneg_data; + req_data->ss_to_reneg->size = 0; + } else { + req_data->ss_to_reneg = (frescan_ss_group_t *)ss_to_reneg; + } + + if (ss_to_cancel == NULL) { + req_data->ss_to_cancel = &req_data->ss_to_cancel_data; + req_data->ss_to_cancel->size = 0; + } else { + req_data->ss_to_cancel = (frescan_ss_group_t *)ss_to_cancel; + + } + + if (ss_new == NULL) { + req_data->ss_new = &req_data->ss_new_data; + req_data->ss_new->size = 0; + } else { + req_data->ss_new = ss_new; + } ret = frescan_bwres_robjs_alloc(&req_data->robj, FRESCAN_BWRES_MX_PRIO); if (ret != 0) return ret; diff --git a/src_frescan/frescan_bwres_analysis.c b/src_frescan/frescan_bwres_analysis.c index c77d616..448ac55 100644 --- a/src_frescan/frescan_bwres_analysis.c +++ b/src_frescan/frescan_bwres_analysis.c @@ -97,8 +97,8 @@ int frescan_bwres_sa_init(frescan_bwres_sa_scenario_t *scenario, FRESCAN_MX_NODES*FRESCAN_MX_IDS); if (ret != 0) return ret; - fsa_scenario_init_data.min_priority = 1; - fsa_scenario_init_data.max_priority = 15; + fsa_scenario_init_data.min_priority = params->min_prio; + fsa_scenario_init_data.max_priority = params->max_prio; fsa_scenario_init_data.ovhd_data.np = frsh_rel_time_to_sa_time(frsh_usec_to_rel_time(0)); @@ -127,6 +127,9 @@ int frescan_bwres_sa_add_contract(frescan_bwres_sa_scenario_t *scenario, sa_vres->contract = *contract; sa_vres->node = node; sa_vres->ss = ss; + sa_vres->old_c = 0; + sa_vres->old_t = 0; + sa_vres->old_p = 0; ret = freelist_alloc(&scenario->fsa_vres_global_id_freelist); if (ret < 0) return -1; diff --git a/src_frescan/frescan_bwres_messages.c b/src_frescan/frescan_bwres_messages.c index 7bef5f0..169a49c 100644 --- a/src_frescan/frescan_bwres_messages.c +++ b/src_frescan/frescan_bwres_messages.c @@ -69,6 +69,7 @@ #include "frescan_bwres_messages.h" #include "frescan_bwres_requests.h" #include "frescan.h" +#include "frescan_servers.h" #include "frescan_data.h" #include "frescan_config.h" #include "frescan_debug.h" @@ -88,13 +89,13 @@ int frescan_messages_init(frescan_network_t net) DEBUG(FRESCAN_BWRES_MESSAGES_ENABLE_DEBUG, "initialization\n"); send_params[net].net = net; - send_params[net].channel = FRESCAN_BWRES_NEG_CHANNEL; + send_params[net].channel = FRESCAN_BWRES_NEG_MSG_CHAN; send_params[net].flags = FRESCAN_SS | FRESCAN_ASYNC; send_params[net].ss = frescan_data[net].neg_messages_ss_id; send_params[net].to = FRESCAN_BWRES_MASTER_NODE; recv_params[net].net = net; - recv_params[net].channel = FRESCAN_BWRES_NEG_CHANNEL; + recv_params[net].channel = FRESCAN_BWRES_NEG_MSG_CHAN; recv_params[net].flags = FRESCAN_SYNC; return 0; @@ -134,7 +135,7 @@ static int frescan_request_to_gn_message // NEG-GROUP DEBUG(FRESCAN_BWRES_MESSAGES_ENABLE_DEBUG, - "NEG-GROUP num contracts:%u\n", data->contracts_to_neg->size); + "NEG-GROUP num contracts:%d\n", data->contracts_to_neg->size); *((uint8_t *)msg) = (uint8_t)data->contracts_to_neg->size; bytes_written = sizeof(uint8_t); @@ -164,7 +165,7 @@ static int frescan_request_to_gn_message // RENEG-GROUP DEBUG(FRESCAN_BWRES_MESSAGES_ENABLE_DEBUG, - "RENEG-GROUP num contracts:%u\n",data->contracts_to_reneg->size); + "RENEG-GROUP num contracts:%d\n",data->contracts_to_reneg->size); *((uint8_t *)msg) = (uint8_t)data->contracts_to_reneg->size; bytes_written = sizeof(uint8_t); @@ -198,7 +199,7 @@ static int frescan_request_to_gn_message } // CANCEL-GROUP - DEBUG(FRESCAN_BWRES_MESSAGES_ENABLE_DEBUG, "CANCEL-GROUP num ss:%u\n", + DEBUG(FRESCAN_BWRES_MESSAGES_ENABLE_DEBUG, "CANCEL-GROUP num ss:%d\n", data->ss_to_cancel->size); *((uint8_t *)msg) = (uint8_t)data->ss_to_cancel->size; @@ -473,8 +474,10 @@ static int frescan_request_to_rep_gn_message uint8_t *msg, size_t *size) { + int i; uint8_t *msg_begin; size_t bytes_written; + frescan_bwres_vres_t *vres; msg_begin = msg; @@ -493,6 +496,33 @@ static int frescan_request_to_rep_gn_message bytes_written = sizeof(uint8_t); msg = msg + bytes_written; + if (data->return_value == FRESCAN_BWRES_REQ_ACCEPTED) { + // new ss values + for(i=0; icontracts_to_neg->size; i++) { + // SS + *((uint16_t *)msg) = data->ss_new->ss[i]; + bytes_written = sizeof(uint16_t); + msg = msg + bytes_written; + + // B - T - P + vres = &frescan_data[data->net].scenario. + vres_pool[data->request_node] + [data->ss_new->ss[i]]; + + *((frsh_sa_time_t *)msg) = vres->old_c; + bytes_written = sizeof(frsh_sa_time_t); + msg = msg + bytes_written; + + *((frsh_sa_time_t *)msg) = vres->old_t; + bytes_written = sizeof(frsh_sa_time_t); + msg = msg + bytes_written; + + *((frsh_sa_prio_t *)msg) = vres->old_p; + bytes_written = sizeof(frsh_sa_prio_t); + msg = msg + bytes_written; + } + } + *size = msg - msg_begin; DEBUG(FRESCAN_BWRES_MESSAGES_ENABLE_DEBUG, "size:%u\n", *size); @@ -505,8 +535,11 @@ static int frescan_rep_gn_message_to_request frescan_bwres_request_data_t *data, size_t size) { + int ret; uint8_t *msg; size_t bytes_read; + frescan_ss_t ss; + frescan_server_params_t server_params; msg = (uint8_t *)msg_to_parse; @@ -520,6 +553,46 @@ static int frescan_rep_gn_message_to_request bytes_read = sizeof(uint8_t); msg = msg + bytes_read; + // create the new sporadic servers + data->ss_new->size = 0; + + while(msg < msg_to_parse + size) { + // SS + data->ss_new->ss[data->ss_new->size] = *((uint16_t *)msg); + bytes_read = sizeof(uint16_t); + msg = msg + bytes_read; + + // Budget + server_params.budget = + frsh_rel_time_to_usec + (frsh_sa_time_to_rel_time(*((frsh_sa_time_t *)msg))) / + FRESCAN_FRAME_TX_TIME_US; + bytes_read = sizeof(frsh_sa_time_t); + msg = msg + bytes_read; + + // Period + server_params.period = frsh_sa_time_to_rel_time + (*((frsh_sa_time_t *)msg)); + bytes_read = sizeof(frsh_sa_time_t); + msg = msg + bytes_read; + + // Prio + server_params.prio = *((frsh_sa_prio_t *)msg); + bytes_read = sizeof(frsh_sa_prio_t); + msg = msg + bytes_read; + + // Create server + ret = frescan_servers_create(data->net, &server_params, &ss); + if (ret != 0) return ret; + + if (ss != data->ss_new->ss[data->ss_new->size]) { + FRESCAN_ERROR("ss from master != ss created\n"); + return -1; + } + + data->ss_new->size++; + } + return 0; } diff --git a/src_frescan/frescan_bwres_mode_change.c b/src_frescan/frescan_bwres_mode_change.c index e4eb1a5..dd858e8 100644 --- a/src_frescan/frescan_bwres_mode_change.c +++ b/src_frescan/frescan_bwres_mode_change.c @@ -77,7 +77,8 @@ static int frescan_bwres_send_mc_messages (frescan_network_t net, - frescan_bwres_mode_change_type_t mode_change_type); + frescan_bwres_mode_change_type_t mode_change_type, + frescan_ss_group_t *ss_to_cancel); /** * frescan_bwres_mode_change_protocol() - performs the mode change protocol @@ -117,6 +118,16 @@ int frescan_bwres_mode_change_protocol(frescan_bwres_request_data_t *req_data) [vres->fsa_vres_global_id]; vres->mode_change_type = 0; + if ((vres->old_c == 0) && + (vres->old_t == 0) && + (vres->old_p == 0)) { + //new vres (transmitted in the reply message) + vres->old_c = sa_vres_data->c; + vres->old_t = sa_vres_data->t; + vres->old_p = sa_vres_data->p; + continue; + } + if (sa_vres_data->c > vres->old_c) { vres->mode_change_type |= FRESCAN_BWRES_MC_BUDGET_INC; if (sa_vres_data->t > max_period_in_budget_inc) { @@ -163,11 +174,13 @@ int frescan_bwres_mode_change_protocol(frescan_bwres_request_data_t *req_data) DEBUG(FRESCAN_BWRES_MC_ENABLE_DEBUG, "2.- Budget decrease\n"); ret = frescan_bwres_send_mc_messages(req_data->net, - FRESCAN_BWRES_MC_BUDGET_DEC); + FRESCAN_BWRES_MC_BUDGET_DEC, + req_data->ss_to_cancel); if (ret != 0) return -1; ret = frescan_bwres_mode_change_local(req_data->net, - FRESCAN_BWRES_MC_BUDGET_DEC); + FRESCAN_BWRES_MC_BUDGET_DEC, + req_data->ss_to_cancel); if (ret != 0) return -1; DEBUG(FRESCAN_BWRES_MC_ENABLE_DEBUG, "3.- Wait max_period\n"); @@ -190,11 +203,13 @@ int frescan_bwres_mode_change_protocol(frescan_bwres_request_data_t *req_data) DEBUG(FRESCAN_BWRES_MC_ENABLE_DEBUG, "4.- Budget increase\n"); ret = frescan_bwres_send_mc_messages(req_data->net, - FRESCAN_BWRES_MC_BUDGET_INC); + FRESCAN_BWRES_MC_BUDGET_INC, + NULL); if (ret != 0) return -1; ret = frescan_bwres_mode_change_local(req_data->net, - FRESCAN_BWRES_MC_BUDGET_INC); + FRESCAN_BWRES_MC_BUDGET_INC, + NULL); if (ret != 0) return -1; return 0; @@ -209,7 +224,8 @@ int frescan_bwres_mode_change_protocol(frescan_bwres_request_data_t *req_data) static int frescan_bwres_send_mc_messages (frescan_network_t net, - frescan_bwres_mode_change_type_t mode_change_type) + frescan_bwres_mode_change_type_t mode_change_type, + frescan_ss_group_t *ss_to_cancel) { int ret; frescan_node_t node; @@ -229,6 +245,7 @@ static int frescan_bwres_send_mc_messages "send MC message to node:%u\n", node); tmp_req_data.request_node = node; + tmp_req_data.ss_to_cancel = ss_to_cancel; ret = frescan_messages_send_request(&tmp_req_data); if (ret != 0) return -1; @@ -246,9 +263,10 @@ static int frescan_bwres_send_mc_messages int frescan_bwres_mode_change_local (frescan_network_t net, - frescan_bwres_mode_change_type_t mode_change_type) + frescan_bwres_mode_change_type_t mode_change_type, + frescan_ss_group_t *ss_to_cancel) { - int ret; + int ret, i; frescan_server_params_t server_params; frescan_bwres_vres_t *vres; struct timespec start_timestamp, next_activation; @@ -286,6 +304,20 @@ int frescan_bwres_mode_change_local if (mode_change_type == FRESCAN_BWRES_MC_BUDGET_INC) return 0; + // for ss cancelled set the perceived capacity to cero + if (ss_to_cancel != NULL) { + for(i=0; isize; i++) { + server_params.budget = 0; + server_params.period = frsh_usec_to_rel_time(0); + server_params.prio = 0; + ret = frescan_servers_set_perceived + (net, + &server_params, + ss_to_cancel->ss[i]); + if (ret != 0) return ret; + } + } + ret = clock_gettime(CLOCK_MONOTONIC, &start_timestamp); if (ret != 0) return -1; @@ -314,5 +346,13 @@ int frescan_bwres_mode_change_local if (ret != 0) return ret; } + if (ss_to_cancel != NULL) { + for(i=0; isize; i++) { + ret = frescan_servers_destroy + (net, ss_to_cancel->ss[i]); + if (ret != 0) return ret; + } + } + return 0; } diff --git a/src_frescan/frescan_bwres_mode_change.h b/src_frescan/frescan_bwres_mode_change.h index 9e635d5..59e6bb7 100644 --- a/src_frescan/frescan_bwres_mode_change.h +++ b/src_frescan/frescan_bwres_mode_change.h @@ -89,6 +89,7 @@ extern int frescan_bwres_mode_change_protocol extern int frescan_bwres_mode_change_local (frescan_network_t net, - frescan_bwres_mode_change_type_t mode_change_type); + frescan_bwres_mode_change_type_t mode_change_type, + frescan_ss_group_t *ss_to_cancel); #endif // _FRESCAN_BWRES_MODE_CHANGE_H_ diff --git a/src_frescan/frescan_bwres_threads.c b/src_frescan/frescan_bwres_threads.c index 38bcc21..a33b36d 100644 --- a/src_frescan/frescan_bwres_threads.c +++ b/src_frescan/frescan_bwres_threads.c @@ -231,10 +231,13 @@ static void *frescan_acceptor_thread(void *arg) static void frescan_manager_req_gn(frescan_bwres_request_data_t *req_data) { - int ret; + int ret, i; frescan_node_t me; bool accepted; frescan_bwres_sa_scenario_t *scenario; + frescan_ss_t ss; + frescan_server_params_t server_params; + frescan_bwres_vres_t *vres; me = frescan_data[req_data->net].local_node; @@ -274,6 +277,28 @@ static void frescan_manager_req_gn(frescan_bwres_request_data_t *req_data) } if (req_data->request_node == me) { + // create servers for new contracts + for(i=0; icontracts_to_neg->size; i++) { + vres = &frescan_data[req_data->net].scenario. + vres_pool[me] + [req_data->ss_new->ss[i]]; + + server_params.budget = frsh_rel_time_to_usec( + frsh_sa_time_to_rel_time(vres->old_c)) / + FRESCAN_FRAME_TX_TIME_US; + + server_params.period = frsh_sa_time_to_rel_time + (vres->old_t); + server_params.prio = vres->old_p; + + // Create server + ret = frescan_servers_create(req_data->net, + &server_params, + &ss); + assert(ret == 0); + assert (req_data->ss_new->ss[i] == ss); + } + DEBUG(FRESCAN_BWRES_MANAGER_ENABLE_DEBUG, "signal robj\n"); ret = frescan_bwres_robjs_signal(req_data->robj); assert(ret == 0); @@ -294,19 +319,14 @@ static void frescan_manager_gn_prepare_scenario frescan_bwres_request_data_t *req_data) { int ret, i; - frescan_server_params_t server_params; // NEG-GROUP - server_params.budget = 0; - server_params.period.tv_sec = 0; - server_params.period.tv_nsec = 0; - server_params.prio = 0; - for(i=0; icontracts_to_neg->size; i++) { - ret = frescan_servers_create(req_data->net, - &server_params, - &req_data->ss_new->ss[i]); - assert(ret == 0); + ret = freelist_alloc(&frescan_data[req_data->net].scenario. + ss_id_freelist[req_data->request_node]); + assert(ret >= 0); + + req_data->ss_new->ss[i] = (frescan_ss_t)ret; ret = frescan_bwres_sa_add_contract (scenario, @@ -363,8 +383,9 @@ static void frescan_manager_gn_restore_scenario NULL); assert(ret == 0); - ret = frescan_servers_destroy(req_data->net, - req_data->ss_new->ss[i]); + ret = freelist_free(&frescan_data[req_data->net].scenario. + ss_id_freelist[req_data->request_node], + req_data->ss_new->ss[i]); assert(ret == 0); } @@ -396,18 +417,24 @@ static void frescan_manager_gn_restore_scenario static void frescan_manager_rep_gn(frescan_bwres_request_data_t *req_data) { - int ret; - frescan_bwres_request_data_t *orig_req_data; + int ret, i; + frescan_bwres_request_data_t *caller_req; - ret = frescan_bwres_requests_get_data(req_data->req, &orig_req_data); + ret = frescan_bwres_requests_get_data(req_data->req, &caller_req); assert(ret == 0); DEBUG(FRESCAN_BWRES_MANAGER_ENABLE_DEBUG, "reply to gn, return value:%d\n", req_data->return_value); - orig_req_data->return_value = req_data->return_value; + caller_req->return_value = req_data->return_value; + + assert (req_data->ss_new->size == caller_req->contracts_to_neg->size); + + for (i=0; iss_new->size; i++) { + caller_req->ss_new->ss[i] = req_data->ss_new->ss[i]; + } - ret = frescan_bwres_robjs_signal(orig_req_data->robj); + ret = frescan_bwres_robjs_signal(caller_req->robj); assert(ret == 0); } @@ -420,6 +447,7 @@ static void frescan_manager_req_mc(frescan_bwres_request_data_t *req_data) int ret; ret = frescan_bwres_mode_change_local(req_data->net, - req_data->mode_change_type); + req_data->mode_change_type, + req_data->ss_to_cancel); assert(ret == 0); } diff --git a/src_frescan/frescan_config.h b/src_frescan/frescan_config.h index 45af923..8a23245 100644 --- a/src_frescan/frescan_config.h +++ b/src_frescan/frescan_config.h @@ -78,8 +78,8 @@ #define FRESCAN_BROADCAST_ADDR 0xF #define FRESCAN_MX_IDS 255 #define FRESCAN_MX_PRIOS 32 -#define FRESCAN_REPL_SIGNAL_NUM FOSA_SIGNAL_MIN + 10 // real-time signal #define FRESCAN_BACKGROUND_PRIO 0 +#define FRESCAN_REPL_SIGNAL_NUM FOSA_SIGNAL_MIN + 10 // real-time signal #define FRESCAN_REPL_THREAD_PRIO 60 #define FRESCAN_MX_NODES 2 #define FRESCAN_MX_REPL_OPS FRESCAN_MX_IDS*10 @@ -93,10 +93,14 @@ #define FRESCAN_BWRES_MX_PRIO 60 #define FRESCAN_BWRES_NEG_THREAD_PRIO 50 #define FRESCAN_BWRES_ACCEPTOR_PRIO FRESCAN_BWRES_NEG_THREAD_PRIO - 1 -#define FRESCAN_BWRES_NEG_MESSAGES_PRIO 8 -#define FRESCAN_BWRES_NEG_CHANNEL 0 +#define FRESCAN_BWRES_NEG_MSG_PRIO 8 +#define FRESCAN_BWRES_NEG_MSG_BUDGET 5 // packets +#define FRESCAN_BWRES_NEG_MSG_PERIOD 1000000 // us +#define FRESCAN_BWRES_NEG_MSG_CHAN 0 #define FRESCAN_BWRES_MX_CONTRACTS (FRESCAN_MX_NODES*FRESCAN_MX_IDS) #define FRESCAN_BWRES_MAX_GROUP_OPS 5 +#define FRESCAN_BWRES_SS_MIN_PRIO 1 +#define FRESCAN_BWRES_SS_MAX_PRIO FRESCAN_MX_PRIOS // FRESCAN_FRAME_TX_TIME_US: measured transmission time of an 8byte frame #define FRESCAN_FRAME_TX_TIME_US 200 diff --git a/src_frescan/frescan_debug.h b/src_frescan/frescan_debug.h index 0f2222b..3d0bf41 100644 --- a/src_frescan/frescan_debug.h +++ b/src_frescan/frescan_debug.h @@ -98,15 +98,15 @@ #define FRESCAN_HW_BUFFER_ENABLE_DEBUG false #define FRESCAN_REPLENSH_ENABLE_DEBUG false -#define FRESCAN_BWRES_ENABLE_DEBUG false +#define FRESCAN_BWRES_ENABLE_DEBUG true #define FRESCAN_BWRES_ROBJS_ENABLE_DEBUG false #define FRESCAN_BWRES_REQUESTS_ENABLE_DEBUG false -#define FRESCAN_BWRES_MANAGER_ENABLE_DEBUG false -#define FRESCAN_BWRES_ACCEPTOR_ENABLE_DEBUG false -#define FRESCAN_BWRES_MC_ENABLE_DEBUG false +#define FRESCAN_BWRES_MANAGER_ENABLE_DEBUG true +#define FRESCAN_BWRES_ACCEPTOR_ENABLE_DEBUG true +#define FRESCAN_BWRES_MC_ENABLE_DEBUG true #define FRESCAN_BWRES_FNA_ENABLE_DEBUG false -#define FRESCAN_BWRES_MESSAGES_ENABLE_DEBUG false -#define FRESCAN_BWRES_SA_ENABLE_DEBUG false +#define FRESCAN_BWRES_MESSAGES_ENABLE_DEBUG true +#define FRESCAN_BWRES_SA_ENABLE_DEBUG true /** * MEASUREMENT FLAGS diff --git a/src_frescan/frescan_types.h b/src_frescan/frescan_types.h index db5c819..46da17c 100644 --- a/src_frescan/frescan_types.h +++ b/src_frescan/frescan_types.h @@ -441,6 +441,7 @@ typedef struct { frescan_bwres_vres_t vres_pool[FRESCAN_MX_NODES][FRESCAN_MX_IDS]; frescan_bwres_vres_t vres_head; // TODO: use struct list_head freelist_t fsa_vres_global_id_freelist; + freelist_t ss_id_freelist[FRESCAN_MX_NODES]; frsh_sa_scenario_t fsa_scenario; frsh_contracts_group_t backup_contracts_to_reneg; frsh_contracts_group_t backup_contracts_to_cancel; diff --git a/tests/tests_frescan/test_frescan_bwres_init.c b/tests/tests_frescan/test_frescan_bwres_init.c index 00f988e..2a92240 100644 --- a/tests/tests_frescan/test_frescan_bwres_init.c +++ b/tests/tests_frescan/test_frescan_bwres_init.c @@ -29,6 +29,8 @@ int main () ret = frescan_bwres_init(NETWORK); if (ret != 0) PUT_ERROR ("could not init BWRES"); + printf("BWRES Initialized\n"); + while (1) { sleep(1); } diff --git a/tests/tests_frescan/test_frescan_bwres_negotiate_in_master.c b/tests/tests_frescan/test_frescan_bwres_negotiate_in_master.c index b9d34e9..5669eef 100644 --- a/tests/tests_frescan/test_frescan_bwres_negotiate_in_master.c +++ b/tests/tests_frescan/test_frescan_bwres_negotiate_in_master.c @@ -13,6 +13,11 @@ #define NETWORK 0 #define LOCAL_NODE 0 +extern int frescan_fna_network_bytes_to_budget + (const frsh_resource_id_t resource_id, + const size_t nbytes, + frsh_rel_time_t *budget); + int main () { int ret; diff --git a/tests/tests_frescan/test_frescan_bwres_negotiate_in_slave.c b/tests/tests_frescan/test_frescan_bwres_negotiate_in_slave.c index 8671cef..00478b8 100644 --- a/tests/tests_frescan/test_frescan_bwres_negotiate_in_slave.c +++ b/tests/tests_frescan/test_frescan_bwres_negotiate_in_slave.c @@ -13,6 +13,11 @@ #define NETWORK 0 #define LOCAL_NODE 1 +extern int frescan_fna_network_bytes_to_budget + (const frsh_resource_id_t resource_id, + const size_t nbytes, + frsh_rel_time_t *budget); + int main () { int ret; diff --git a/tests/tests_frescan/test_frescan_bwres_robjs_timedwait.c b/tests/tests_frescan/test_frescan_bwres_robjs_timedwait.c index b0b0cec..26a7fdc 100644 --- a/tests/tests_frescan/test_frescan_bwres_robjs_timedwait.c +++ b/tests/tests_frescan/test_frescan_bwres_robjs_timedwait.c @@ -38,7 +38,7 @@ static void *thread_code(void *arg); int main() { int err; - frescan_robj_id_t id; + frescan_bwres_robj_id_t id; fosa_thread_attr_t th_attr; fosa_thread_id_t tid; struct timespec now; @@ -97,7 +97,7 @@ int main() static void *thread_code(void *arg) { int err; - frescan_robj_id_t reply = (frescan_robj_id_t)arg; + frescan_bwres_robj_id_t reply = (frescan_bwres_robj_id_t)arg; printf("Thread signaling\n"); err = frescan_bwres_robjs_signal(reply); diff --git a/tests/tests_frescan/test_frescan_bwres_robjs_wait.c b/tests/tests_frescan/test_frescan_bwres_robjs_wait.c index 80cd7c4..ba39166 100644 --- a/tests/tests_frescan/test_frescan_bwres_robjs_wait.c +++ b/tests/tests_frescan/test_frescan_bwres_robjs_wait.c @@ -35,7 +35,7 @@ static void *thread_code(void *arg); int main() { int err; - frescan_robj_id_t id; + frescan_bwres_robj_id_t id; fosa_thread_attr_t th_attr; fosa_thread_id_t tid; @@ -77,7 +77,7 @@ int main() static void *thread_code(void *arg) { int err; - frescan_robj_id_t reply = (frescan_robj_id_t)arg; + frescan_bwres_robj_id_t reply = (frescan_bwres_robj_id_t)arg; printf("Thread executing\n"); sleep(2); diff --git a/tests/tests_frescan/test_frescan_fp_send_basic.c b/tests/tests_frescan/test_frescan_fp_send_basic.c index 6b2e48a..262d137 100644 --- a/tests/tests_frescan/test_frescan_fp_send_basic.c +++ b/tests/tests_frescan/test_frescan_fp_send_basic.c @@ -1,6 +1,3 @@ -// mgcc test_frescan_send_basic.c -L. -lfrescan -o mprogram_wifi2 -// mgcc test_frescan_send_basic.c -DSENDER -L. -lfrescan -o mprogram_wifi1 - #include // perror #include // exit #include // sleep diff --git a/tests/tests_frescan/test_frescan_init.c b/tests/tests_frescan/test_frescan_init.c index 56a0f94..ca0245e 100644 --- a/tests/tests_frescan/test_frescan_init.c +++ b/tests/tests_frescan/test_frescan_init.c @@ -4,7 +4,7 @@ #include "frescan.h" -#define ERROR(s) {perror (s); exit (-1);} +#define PUT_ERROR(s) {perror (s); exit (-1);} #define NETWORK 0 #define LOCAL_NODE 1 @@ -21,7 +21,7 @@ int main () init_params.rx_channel_max_prio = NULL; ret = frescan_init(&init_params); - if (ret != 0) ERROR ("could not init FRESCAN"); + if (ret != 0) PUT_ERROR ("could not init FRESCAN"); printf("FRESCAN initialized\n"); diff --git a/tests/tests_frescan/test_frescan_queues.c b/tests/tests_frescan/test_frescan_queues.c index a809f3e..cd03ad8 100644 --- a/tests/tests_frescan/test_frescan_queues.c +++ b/tests/tests_frescan/test_frescan_queues.c @@ -4,6 +4,7 @@ #include // uint32_t #include "frescan_queues.h" +#include "frescan_packets.h" #include "frescan_debug.h" #include #include