*************/
surf_callback(void, RoutingEdge*) routingEdgeCreatedCallbacks;
+surf_callback(void, As*) asCreatedCallbacks;
/**
* @ingroup SURF_build_api
return current_routing;
}
-static void routing_parse_peer(sg_platf_peer_cbarg_t peer); /* peer bypass */
// static void routing_parse_Srandom(void); /* random bypass */
static void routing_parse_postparse(void);
/**
* \brief Add a "host_link" to the network element list
*/
-static void parse_S_host(sg_platf_host_link_cbarg_t host)
+void sg_platf_new_host_link(sg_platf_host_link_cbarg_t host)
{
RoutingEdge *info = sg_host_edge(sg_host_by_name(host->id));
xbt_assert(info, "Host '%s' not found!", host->id);
return routingEdge;
}
-/**
- * \brief Add a "router" to the network element list
- */
-static void parse_S_router(sg_platf_router_cbarg_t router)
-{
- if (current_routing->p_hierarchy == SURF_ROUTING_NULL)
- current_routing->p_hierarchy = SURF_ROUTING_BASE;
- xbt_assert(!xbt_lib_get_or_null(as_router_lib, router->id, ROUTING_ASR_LEVEL),
- "Reading a router, processing unit \"%s\" already exists",
- router->id);
-
- RoutingEdge *info = new RoutingEdgeImpl(xbt_strdup(router->id),
- -1,
- SURF_NETWORK_ELEMENT_ROUTER,
- current_routing);
- info->setId(current_routing->parsePU(info));
- xbt_lib_set(as_router_lib, router->id, ROUTING_ASR_LEVEL, (void *) info);
- XBT_DEBUG("Having set name '%s' id '%d'", router->id, info->getId());
- routingEdgeCreatedCallbacks(info);
-
- if (router->coord && strcmp(router->coord, "")) {
- unsigned int cursor;
- char*str;
-
- if (!COORD_ASR_LEVEL)
- xbt_die ("To use host coordinates, please add --cfg=network/coordinates:yes to your command line");
- /* Pre-parse the host coordinates */
- xbt_dynar_t ctn_str = xbt_str_split_str(router->coord, " ");
- xbt_dynar_t ctn = xbt_dynar_new(sizeof(double),NULL);
- xbt_dynar_foreach(ctn_str,cursor, str) {
- double val = atof(str);
- xbt_dynar_push(ctn,&val);
- }
- xbt_dynar_shrink(ctn, 0);
- xbt_dynar_free(&ctn_str);
- xbt_lib_set(as_router_lib, router->id, COORD_ASR_LEVEL, (void *) ctn);
- XBT_DEBUG("Having set router coordinates for '%s'",router->id);
- }
-}
-
-/**
- * \brief Store the route by calling the set_route function of the current routing component
- */
-static void parse_E_route(sg_platf_route_cbarg_t route)
-{
- /*FIXME:REMOVE:xbt_assert(current_routing->parse_route,
- "no defined method \"set_route\" in \"%s\"",
- current_routing->name);*/
-
- current_routing->parseRoute(route);
-}
-
/**
* \brief Store the ASroute by calling the set_ASroute function of the current routing component
*/
current_routing->parseASroute(ASroute);
}
-/**
- * \brief Store the bypass route by calling the set_bypassroute function of the current routing component
- */
-static void parse_E_bypassRoute(sg_platf_route_cbarg_t route)
-{
- /*FIXME:REMOVE:xbt_assert(current_routing->parse_bypassroute,
- "Bypassing mechanism not implemented by routing '%s'",
- current_routing->name);*/
-
- current_routing->parseBypassroute(route);
-}
-
-/**
- * \brief Store the bypass route by calling the set_bypassroute function of the current routing component
- */
-static void parse_E_bypassASroute(sg_platf_route_cbarg_t ASroute)
-{
- /*FIXME:REMOVE:xbt_assert(current_routing->parse_bypassroute,
- "Bypassing mechanism not implemented by routing '%s'",
- current_routing->name);*/
- current_routing->parseBypassroute(ASroute);
-}
-
-static void routing_parse_trace(sg_platf_trace_cbarg_t trace)
+void sg_platf_new_trace(sg_platf_trace_cbarg_t trace)
{
tmgr_trace_t tmgr_trace;
if (!trace->file || strcmp(trace->file, "") != 0) {
xbt_dict_set(traces_set_list, trace->id, (void *) tmgr_trace, NULL);
}
-static void routing_parse_trace_connect(sg_platf_trace_connect_cbarg_t trace_connect)
+void sg_platf_trace_connect(sg_platf_trace_connect_cbarg_t trace_connect)
{
xbt_assert(xbt_dict_get_or_null
(traces_set_list, trace_connect->trace),
(void *) info);
XBT_DEBUG("Having set name '%s' id '%d'", new_as->p_name, info->getId());
- routingEdgeCreatedCallbacks(info);
-
/* set the new current component of the tree */
current_routing = new_as;
current_routing->p_netElem = info;
+
+ routingEdgeCreatedCallbacks(info);
+ asCreatedCallbacks(new_as);
}
/**
* even if you add stuff to a closed AS
*
*/
-void routing_AS_end(sg_platf_AS_cbarg_t /*AS*/)
+void routing_AS_end()
{
if (current_routing == NULL) {
XBT_DEBUG("Add a backbone to AS '%s'", current_routing->p_name);
}
-static void routing_parse_cabinet(sg_platf_cabinet_cbarg_t cabinet)
+void sg_platf_new_cabinet(sg_platf_cabinet_cbarg_t cabinet)
{
int start, end, i;
char *groups , *host_id , *link_id = NULL;
memset(&host, 0, sizeof(host));
host.initial_state = SURF_RESOURCE_ON;
host.pstate = 0;
- host.power_scale = 1.0;
+ host.speed_scale = 1.0;
host.core_amount = 1;
s_sg_platf_link_cbarg_t link = SG_PLATF_LINK_INITIALIZER;
link_id = bprintf("link_%s%d%s",cabinet->prefix,i,cabinet->suffix);
host.id = host_id;
link.id = link_id;
- host.power_peak = xbt_dynar_new(sizeof(double), NULL);
- xbt_dynar_push(host.power_peak,&cabinet->power);
+ host.speed_peak = xbt_dynar_new(sizeof(double), NULL);
+ xbt_dynar_push(host.speed_peak,&cabinet->speed);
sg_platf_new_host(&host);
- xbt_dynar_free(&host.power_peak);
+ xbt_dynar_free(&host.speed_peak);
sg_platf_new_link(&link);
char* link_up = bprintf("%s_UP",link_id);
xbt_dynar_free(&radical_elements);
}
-static void routing_parse_cluster(sg_platf_cluster_cbarg_t cluster)
+void routing_new_cluster(sg_platf_cluster_cbarg_t cluster)
{
char *host_id, *groups, *link_id = NULL;
xbt_dict_t patterns = NULL;
bprintf("%s%d%s", cluster->prefix, i, cluster->suffix);
link_id = bprintf("%s_link_%d", cluster->id, i);
- XBT_DEBUG("<host\tid=\"%s\"\tpower=\"%f\">", host_id, cluster->power);
+ XBT_DEBUG("<host\tid=\"%s\"\tpower=\"%f\">", host_id, cluster->speed);
memset(&host, 0, sizeof(host));
host.id = host_id;
xbt_dict_set(patterns, "radical", bprintf("%d", i), NULL);
char *avail_file = xbt_str_varsubst(cluster->availability_trace, patterns);
XBT_DEBUG("\tavailability_file=\"%s\"", avail_file);
- host.power_trace = tmgr_trace_new_from_file(avail_file);
+ host.speed_trace = tmgr_trace_new_from_file(avail_file);
xbt_free(avail_file);
} else {
XBT_DEBUG("\tavailability_file=\"\"");
XBT_DEBUG("\tstate_file=\"\"");
}
- host.power_peak = xbt_dynar_new(sizeof(double), NULL);
- xbt_dynar_push(host.power_peak,&cluster->power);
+ host.speed_peak = xbt_dynar_new(sizeof(double), NULL);
+ xbt_dynar_push(host.speed_peak,&cluster->speed);
host.pstate = 0;
//host.power_peak = cluster->power;
- host.power_scale = 1.0;
+ host.speed_scale = 1.0;
host.core_amount = cluster->core_amount;
host.initial_state = SURF_RESOURCE_ON;
host.coord = "";
sg_platf_new_host(&host);
- xbt_dynar_free(&host.power_peak);
+ xbt_dynar_free(&host.speed_peak);
XBT_DEBUG("</host>");
XBT_DEBUG("<link\tid=\"%s\"\tbw=\"%f\"\tlat=\"%f\"/>", link_id,
xbt_dict_free(&random_value);
}
-static void routing_parse_peer(sg_platf_peer_cbarg_t peer)
+void sg_platf_new_peer(sg_platf_peer_cbarg_t peer)
{
char *host_id = NULL;
char *link_id = NULL;
current_routing->p_linkUpDownList = xbt_dynar_new(sizeof(s_surf_parsing_link_up_down_t),NULL);
- XBT_DEBUG("<host\tid=\"%s\"\tpower=\"%f\"/>", host_id, peer->power);
+ XBT_DEBUG("<host\tid=\"%s\"\tpower=\"%f\"/>", host_id, peer->speed);
s_sg_platf_host_cbarg_t host = SG_PLATF_HOST_INITIALIZER;
memset(&host, 0, sizeof(host));
host.initial_state = SURF_RESOURCE_ON;
host.id = host_id;
- host.power_peak = xbt_dynar_new(sizeof(double), NULL);
- xbt_dynar_push(host.power_peak,&peer->power);
+ host.speed_peak = xbt_dynar_new(sizeof(double), NULL);
+ xbt_dynar_push(host.speed_peak,&peer->speed);
host.pstate = 0;
//host.power_peak = peer->power;
- host.power_scale = 1.0;
- host.power_trace = peer->availability_trace;
+ host.speed_scale = 1.0;
+ host.speed_trace = peer->availability_trace;
host.state_trace = peer->state_trace;
host.core_amount = 1;
sg_platf_new_host(&host);
- xbt_dynar_free(&host.power_peak);
+ xbt_dynar_free(&host.speed_peak);
s_sg_platf_link_cbarg_t link = SG_PLATF_LINK_INITIALIZER;
memset(&link, 0, sizeof(link));
void routing_register_callbacks()
{
- sg_platf_router_add_cb(parse_S_router);
- sg_platf_host_link_add_cb(parse_S_host);
- sg_platf_route_add_cb(parse_E_route);
- sg_platf_ASroute_add_cb(parse_E_ASroute);
- sg_platf_bypassRoute_add_cb(parse_E_bypassRoute);
- sg_platf_bypassASroute_add_cb(parse_E_bypassASroute);
-
- sg_platf_cluster_add_cb(routing_parse_cluster);
- sg_platf_cabinet_add_cb(routing_parse_cabinet);
-
- sg_platf_peer_add_cb(routing_parse_peer);
sg_platf_postparse_add_cb(routing_parse_postparse);
sg_platf_postparse_add_cb(check_disk_attachment);
- /* we care about the ASes while parsing the platf. Incredible, isnt it? */
- sg_platf_AS_end_add_cb(routing_AS_end);
- sg_platf_AS_begin_add_cb(routing_AS_begin);
-
- sg_platf_trace_add_cb(routing_parse_trace);
- sg_platf_trace_connect_add_cb(routing_parse_trace_connect);
-
instr_routing_define_callbacks();
}