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
what is that pimple, for god's sake??
[simgrid.git]
/
src
/
surf
/
surf_routing.c
diff --git
a/src/surf/surf_routing.c
b/src/surf/surf_routing.c
index
b5a2578
..
de758a1
100644
(file)
--- a/
src/surf/surf_routing.c
+++ b/
src/surf/surf_routing.c
@@
-46,7
+46,6
@@
static const char *src = NULL; /* temporary store the source name of a route */
static const char *dst = NULL; /* temporary store the destination name of a route */
static char *gw_src = NULL; /* temporary store the gateway source name of a route */
static char *gw_dst = NULL; /* temporary store the gateway destination name of a route */
static const char *dst = NULL; /* temporary store the destination name of a route */
static char *gw_src = NULL; /* temporary store the gateway source name of a route */
static char *gw_dst = NULL; /* temporary store the gateway destination name of a route */
-static double_f_cpvoid_t get_link_latency = NULL;
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_route, surf, "Routing part of surf");
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_route, surf, "Routing part of surf");
@@
-71,26
+70,24
@@
typedef enum {
struct s_model_type routing_models[] = {
{"Full",
"Full routing data (fast, large memory requirements, fully expressive)",
struct s_model_type routing_models[] = {
{"Full",
"Full routing data (fast, large memory requirements, fully expressive)",
- model_full_create,
model_full_load, model_full_unload
, model_full_end},
+ model_full_create,
NULL,NULL
, model_full_end},
{"Floyd",
"Floyd routing data (slow initialization, fast lookup, lesser memory requirements, shortest path routing only)",
{"Floyd",
"Floyd routing data (slow initialization, fast lookup, lesser memory requirements, shortest path routing only)",
- model_floyd_create,
model_floyd_load, model_floyd_unload
, model_floyd_end},
+ model_floyd_create,
NULL,NULL
, model_floyd_end},
{"Dijkstra",
"Dijkstra routing data (fast initialization, slow lookup, small memory requirements, shortest path routing only)",
{"Dijkstra",
"Dijkstra routing data (fast initialization, slow lookup, small memory requirements, shortest path routing only)",
- model_dijkstra_create, model_dijkstra_both_load,
- model_dijkstra_both_unload, model_dijkstra_both_end},
+ model_dijkstra_create, NULL,NULL, model_dijkstra_both_end},
{"DijkstraCache",
"Dijkstra routing data (fast initialization, fast lookup, small memory requirements, shortest path routing only)",
{"DijkstraCache",
"Dijkstra routing data (fast initialization, fast lookup, small memory requirements, shortest path routing only)",
- model_dijkstracache_create, model_dijkstra_both_load,
- model_dijkstra_both_unload, model_dijkstra_both_end},
+ model_dijkstracache_create, NULL,NULL, model_dijkstra_both_end},
{"none", "No routing (usable with Constant network only)",
{"none", "No routing (usable with Constant network only)",
- model_none_create,
model_none_load, model_none_unload, model_none_end
},
+ model_none_create,
NULL, NULL, NULL
},
{"RuleBased", "Rule-Based routing data (...)",
{"RuleBased", "Rule-Based routing data (...)",
- model_rulebased_create,
model_none_load, model_none_unload, model_none_end
},
+ model_rulebased_create,
NULL, NULL, NULL
},
{"Vivaldi", "Vivaldi routing",
{"Vivaldi", "Vivaldi routing",
- model_vivaldi_create,
model_none_load, model_none_unload, model_none_end
},
+ model_vivaldi_create,
NULL, NULL, NULL
},
{"Cluster", "Cluster routing",
{"Cluster", "Cluster routing",
- model_cluster_create,
model_none_load, model_cluster_unload, model_none_end
},
+ model_cluster_create,
NULL, NULL, NULL
},
{NULL, NULL, NULL, NULL, NULL, NULL}
};
{NULL, NULL, NULL, NULL, NULL, NULL}
};
@@
-350,13
+347,15
@@
void routing_AS_open(const char *AS_id, const char *wanted_routing_type)
/* add to the father element list */
(*(current_routing->set_autonomous_system)) (current_routing, AS_id);
/* unload the prev parse rules */
/* add to the father element list */
(*(current_routing->set_autonomous_system)) (current_routing, AS_id);
/* unload the prev parse rules */
- (*(current_routing->routing->unload)) ();
+ if (current_routing->routing->unload)
+ (*(current_routing->routing->unload)) ();
} else {
THROWF(arg_error, 0, "All defined components must be belong to a AS");
}
/* set the new parse rules */
} else {
THROWF(arg_error, 0, "All defined components must be belong to a AS");
}
/* set the new parse rules */
- (*(new_routing->routing->load)) ();
+ if (new_routing->routing->load)
+ (*(new_routing->routing->load)) ();
/* set the new current component of the tree */
current_routing = new_routing;
}
/* set the new current component of the tree */
current_routing = new_routing;
}
@@
-388,10
+387,12
@@
void routing_AS_close()
xbt_lib_set(as_router_lib, current_routing->name, ROUTING_ASR_LEVEL,
(void *) info);
xbt_lib_set(as_router_lib, current_routing->name, ROUTING_ASR_LEVEL,
(void *) info);
- (*(current_routing->routing->unload)) ();
- (*(current_routing->routing->end)) ();
+ if (current_routing->routing->unload)
+ (*(current_routing->routing->unload)) ();
+ if (current_routing->routing->end)
+ (*(current_routing->routing->end)) ();
current_routing = current_routing->routing_father;
current_routing = current_routing->routing_father;
- if (current_routing != NULL)
+ if (current_routing != NULL
&& current_routing->routing->load != NULL
)
(*(current_routing->routing->load)) ();
}
}
(*(current_routing->routing->load)) ();
}
}
@@
-814,8
+815,7
@@
e_surf_network_element_type_t get_network_element_type(const char *name)
*
* Make a global routing structure and set all the parsing functions.
*/
*
* Make a global routing structure and set all the parsing functions.
*/
-void routing_model_create(size_t size_of_links, void *loopback,
- double_f_cpvoid_t get_link_latency_fun)
+void routing_model_create(size_t size_of_links, void *loopback)
{
/* config the uniq global routing */
global_routing = xbt_new0(s_routing_global_t, 1);
{
/* config the uniq global routing */
global_routing = xbt_new0(s_routing_global_t, 1);
@@
-831,7
+831,6
@@
void routing_model_create(size_t size_of_links, void *loopback,
global_routing->loopback = loopback;
global_routing->size_of_link = size_of_links;
global_routing->last_route = NULL;
global_routing->loopback = loopback;
global_routing->size_of_link = size_of_links;
global_routing->last_route = NULL;
- get_link_latency = get_link_latency_fun;
/* no current routing at moment */
current_routing = NULL;
}
/* no current routing at moment */
current_routing = NULL;
}
@@
-954,7
+953,7
@@
double generic_get_link_latency(routing_component_t rc,
route = route ? route : rc->get_route(rc, src, dst);
xbt_dynar_foreach(route->generic_route.link_list, i, link) {
route = route ? route : rc->get_route(rc, src, dst);
xbt_dynar_foreach(route->generic_route.link_list, i, link) {
- latency += get_link_latency(link);
+ latency +=
surf_network_model->extension.network.
get_link_latency(link);
}
if (need_to_clean)
generic_free_extended_route(route);
}
if (need_to_clean)
generic_free_extended_route(route);