A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
do not search the cluster backbones again and again, store them in the right location
[simgrid.git]
/
src
/
surf
/
surf_routing_cluster.c
diff --git
a/src/surf/surf_routing_cluster.c
b/src/surf/surf_routing_cluster.c
index
d5658b6
..
883b887
100644
(file)
--- a/
src/surf/surf_routing_cluster.c
+++ b/
src/surf/surf_routing_cluster.c
@@
-14,6
+14,12
@@
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_route_cluster, surf, "Routing part of surf"
* Note that a router is created, easing the interconnexion with the rest of the world.
*/
* Note that a router is created, easing the interconnexion with the rest of the world.
*/
+typedef struct {
+ s_as_t generic_routing;
+ void *backbone;
+} s_as_cluster_t, *as_cluster_t;
+
+
static xbt_dict_t cluster_host_link = NULL;
/* Business methods */
static xbt_dict_t cluster_host_link = NULL;
/* Business methods */
@@
-28,8
+34,8
@@
static route_extended_t cluster_get_route(AS_t as,
info = xbt_dict_get_or_null(cluster_host_link,src);
if(info) xbt_dynar_push_as(links_list,void*,info->link_up); //link_up
info = xbt_dict_get_or_null(cluster_host_link,src);
if(info) xbt_dynar_push_as(links_list,void*,info->link_up); //link_up
- i
nfo = xbt_dict_get_or_null(cluster_host_link,as->name);
- if(info) xbt_dynar_push_as(links_list,void*,info->link_up); //link_bb
+ i
f ( ((as_cluster_t)as)->backbone )
+ xbt_dynar_push_as(links_list,void*, ((as_cluster_t)as)->backbone) ;
info = xbt_dict_get_or_null(cluster_host_link,dst);
if(info) xbt_dynar_push_as(links_list,void*,info->link_down); //link_down
info = xbt_dict_get_or_null(cluster_host_link,dst);
if(info) xbt_dynar_push_as(links_list,void*,info->link_down); //link_down
@@
-41,11
+47,16
@@
static route_extended_t cluster_get_route(AS_t as,
return new_e_route;
}
return new_e_route;
}
+static void model_cluster_finalize(AS_t as) {
+ xbt_dict_free(&cluster_host_link);
+ model_none_finalize(as);
+}
/* Creation routing model functions */
AS_t model_cluster_create(void)
{
/* Creation routing model functions */
AS_t model_cluster_create(void)
{
- AS_t result = model_none_create
(
);
+ AS_t result = model_none_create
_sized(sizeof(s_as_cluster_t)
);
result->get_route = cluster_get_route;
result->get_route = cluster_get_route;
+ result->finalize = model_cluster_finalize;
return (AS_t) result;
}
return (AS_t) result;
}
@@
-56,3
+67,7
@@
void surf_routing_cluster_add_link(const char* host_id,surf_parsing_link_up_down
xbt_dict_set(cluster_host_link,host_id,info,xbt_free);
}
xbt_dict_set(cluster_host_link,host_id,info,xbt_free);
}
+
+void surf_routing_cluster_add_backbone(AS_t as, void* bb) {
+ ((as_cluster_t)as)->backbone = bb;
+}