From: Paul Bédaride Date: Fri, 31 Jan 2014 15:31:13 +0000 (+0100) Subject: Add RoutingEdge wrapper to manage vm not destroy X-Git-Tag: v3_11_beta~96 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/829b0c9f55b2cda57fb9371026214dd3c646e9c1?ds=sidebyside Add RoutingEdge wrapper to manage vm not destroy --- diff --git a/buildtools/Cmake/AddTests.cmake b/buildtools/Cmake/AddTests.cmake index 8036e0b382..1f81839fd0 100644 --- a/buildtools/Cmake/AddTests.cmake +++ b/buildtools/Cmake/AddTests.cmake @@ -173,6 +173,8 @@ if(NOT enable_memcheck) ADD_TEST(msg-masterslave-virtual-machines-thread ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg --cd ${CMAKE_HOME_DIRECTORY}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/cloud/masterslave_virtual_machines.tesh) + ADD_TEST(msg-cloud-two-tasks-vm-thread ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg/cloud/ --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg/cloud/ --cd ${CMAKE_BINARY_DIR}/examples/msg/cloud/ ${CMAKE_HOME_DIRECTORY}/examples/msg/cloud/two_tasks_vm.tesh) + if(CONTEXT_UCONTEXT) ADD_TEST(msg-sendrecv-CLM03-ucontext ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/sendrecv/sendrecv_CLM03.tesh) ADD_TEST(msg-sendrecv-Vegas-ucontext ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/sendrecv/sendrecv_Vegas.tesh) @@ -196,6 +198,8 @@ if(NOT enable_memcheck) ADD_TEST(msg-masterslave-vivaldi-ucontext ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/masterslave/masterslave_vivaldi.tesh) ADD_TEST(msg-masterslave-virtual-machines-ucontext ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg --cd ${CMAKE_HOME_DIRECTORY}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/cloud/masterslave_virtual_machines.tesh) + + ADD_TEST(msg-cloud-two-tasks-vm-ucontext ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg/cloud/ --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg/cloud/ --cd ${CMAKE_BINARY_DIR}/examples/msg/cloud/ ${CMAKE_HOME_DIRECTORY}/examples/msg/cloud/two_tasks_vm.tesh) endif() if(HAVE_RAWCTX) @@ -221,6 +225,9 @@ if(NOT enable_memcheck) ADD_TEST(msg-masterslave-vivaldi-raw ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:raw --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/masterslave/masterslave_vivaldi.tesh) ADD_TEST(msg-masterslave-virtual-machines-raw ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:raw --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg --cd ${CMAKE_HOME_DIRECTORY}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/cloud/masterslave_virtual_machines.tesh) + + ADD_TEST(msg-cloud-two-tasks-vm-raw ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:raw --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg/cloud/ --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg/cloud/ --cd ${CMAKE_BINARY_DIR}/examples/msg/cloud/ ${CMAKE_HOME_DIRECTORY}/examples/msg/cloud/two_tasks_vm.tesh) + endif() ADD_TEST(msg-energy-pstates-thread ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/energy/e1/pstate.tesh) diff --git a/examples/msg/cloud/CMakeLists.txt b/examples/msg/cloud/CMakeLists.txt index 60f12b8da1..f609e8e154 100644 --- a/examples/msg/cloud/CMakeLists.txt +++ b/examples/msg/cloud/CMakeLists.txt @@ -8,6 +8,7 @@ add_executable(migrate_vm "migrate_vm.c") add_executable(bound "bound.c") add_executable(scale "scale.c") add_executable(multicore "multicore.c") +add_executable(two_tasks_vm "two_tasks_vm.c") ### Add definitions for compile target_link_libraries(masterslave_virtual_machines simgrid) @@ -16,10 +17,13 @@ target_link_libraries(migrate_vm simgrid) target_link_libraries(bound simgrid) target_link_libraries(scale simgrid) target_link_libraries(multicore simgrid) +target_link_libraries(two_tasks_vm simgrid) + set(tesh_files ${tesh_files} ${CMAKE_CURRENT_SOURCE_DIR}/masterslave_virtual_machines.tesh + ${CMAKE_CURRENT_SOURCE_DIR}/two_tasks_vm.tesh PARENT_SCOPE ) set(xml_files @@ -37,6 +41,7 @@ set(examples_src ${CMAKE_CURRENT_SOURCE_DIR}/bound.c ${CMAKE_CURRENT_SOURCE_DIR}/scale.c ${CMAKE_CURRENT_SOURCE_DIR}/multicore.c + ${CMAKE_CURRENT_SOURCE_DIR}/two_tasks_vm.c PARENT_SCOPE ) set(bin_files diff --git a/src/surf/cpu_cas01.cpp b/src/surf/cpu_cas01.cpp index 8baff8b4d2..20241cba1b 100644 --- a/src/surf/cpu_cas01.cpp +++ b/src/surf/cpu_cas01.cpp @@ -212,7 +212,8 @@ CpuCas01::CpuCas01(CpuCas01ModelPtr model, const char *name, xbt_dynar_t powerPe } CpuCas01::~CpuCas01(){ - xbt_dynar_free(&p_powerPeakList); + if (getModel() == surf_cpu_model_pm) + xbt_dynar_free(&p_powerPeakList); } bool CpuCas01::isUsed() diff --git a/src/surf/network_cm02.cpp b/src/surf/network_cm02.cpp index e34e829965..7d27092f02 100644 --- a/src/surf/network_cm02.cpp +++ b/src/surf/network_cm02.cpp @@ -372,12 +372,12 @@ ActionPtr NetworkCm02Model::communicate(RoutingEdgePtr src, RoutingEdgePtr dst, xbt_dynar_t route = xbt_dynar_new(sizeof(RoutingEdgePtr), NULL); - XBT_IN("(%s,%s,%g,%g)", src->p_name, dst->p_name, size, rate); + XBT_IN("(%s,%s,%g,%g)", src->getName(), dst->getName(), size, rate); routing_platf->getRouteAndLatency(src, dst, &route, &latency); xbt_assert(!xbt_dynar_is_empty(route) || latency, "You're trying to send data from %s to %s but there is no connection at all between these two hosts.", - src->p_name, dst->p_name); + src->getName(), dst->getName()); xbt_dynar_foreach(route, i, _link) { link = static_cast(_link); @@ -434,7 +434,7 @@ ActionPtr NetworkCm02Model::communicate(RoutingEdgePtr src, RoutingEdgePtr dst, link = *static_cast(xbt_dynar_get_ptr(route, 0)); gapAppend(size, link, action); XBT_DEBUG("Comm %p: %s -> %s gap=%f (lat=%f)", - action, src->p_name, dst->p_name, action->m_senderGap, + action, src->getName(), dst->getName(), action->m_senderGap, action->m_latency); } diff --git a/src/surf/network_constant.cpp b/src/surf/network_constant.cpp index 60ca4cd378..ed5663f661 100644 --- a/src/surf/network_constant.cpp +++ b/src/surf/network_constant.cpp @@ -75,8 +75,8 @@ void NetworkConstantModel::updateActionsState(double /*now*/, double delta) ActionPtr NetworkConstantModel::communicate(RoutingEdgePtr src, RoutingEdgePtr dst, double size, double rate) { - char *src_name = src->p_name; - char *dst_name = dst->p_name; + char *src_name = src->getName(); + char *dst_name = dst->getName(); XBT_IN("(%s,%s,%g,%g)", src_name, dst_name, size, rate); NetworkConstantActionPtr action = new NetworkConstantAction(this, size, sg_latency_factor); diff --git a/src/surf/surf_c_bindings.cpp b/src/surf/surf_c_bindings.cpp index be2220250a..de49456acc 100644 --- a/src/surf/surf_c_bindings.cpp +++ b/src/surf/surf_c_bindings.cpp @@ -25,7 +25,7 @@ static WorkstationVMPtr get_casted_vm_workstation(surf_resource_t resource){ } char *surf_routing_edge_name(sg_routing_edge_t edge){ - return edge->p_name; + return edge->getName(); } #ifdef CONTEXT_THREADS diff --git a/src/surf/surf_interface.cpp b/src/surf/surf_interface.cpp index 726e0fded0..186047977b 100644 --- a/src/surf/surf_interface.cpp +++ b/src/surf/surf_interface.cpp @@ -426,6 +426,17 @@ void surf_exit(void) sg_config_finalize(); + xbt_dynar_free(&host_that_restart); + xbt_dynar_free(&surf_path); + + xbt_lib_free(&host_lib); + xbt_lib_free(&link_lib); + xbt_lib_free(&as_router_lib); + xbt_lib_free(&storage_lib); + xbt_lib_free(&storage_type_lib); + + xbt_dict_free(&watched_hosts_lib); + xbt_dynar_foreach(model_list, iter, model) delete model; xbt_dynar_free(&model_list); @@ -448,17 +459,6 @@ void surf_exit(void) xbt_free(surf_mins); surf_mins = NULL; - xbt_dynar_free(&host_that_restart); - xbt_dynar_free(&surf_path); - - xbt_lib_free(&host_lib); - xbt_lib_free(&link_lib); - xbt_lib_free(&as_router_lib); - xbt_lib_free(&storage_lib); - xbt_lib_free(&storage_type_lib); - - xbt_dict_free(&watched_hosts_lib); - tmgr_finalize(); surf_parse_lex_destroy(); surf_parse_free_callbacks(); diff --git a/src/surf/surf_routing.cpp b/src/surf/surf_routing.cpp index b2e8bdbdee..8ba9035ba6 100644 --- a/src/surf/surf_routing.cpp +++ b/src/surf/surf_routing.cpp @@ -135,12 +135,12 @@ static void parse_S_host_link(sg_platf_host_link_cbarg_t host) current_routing->p_linkUpDownList = xbt_dynar_new(sizeof(s_surf_parsing_link_up_down_t),NULL); // If dynar is is greater than edge id and if the host_link is already defined - if((int)xbt_dynar_length(current_routing->p_linkUpDownList) > info->m_id && - xbt_dynar_get_as(current_routing->p_linkUpDownList, info->m_id, void*)) + if((int)xbt_dynar_length(current_routing->p_linkUpDownList) > info->getId() && + xbt_dynar_get_as(current_routing->p_linkUpDownList, info->getId(), void*)) xbt_die("Host_link for '%s' is already defined!",host->id); - XBT_DEBUG("Push Host_link for host '%s' to position %d", info->p_name, info->m_id); - xbt_dynar_set_as(current_routing->p_linkUpDownList, info->m_id, s_surf_parsing_link_up_down_t, link_up_down); + XBT_DEBUG("Push Host_link for host '%s' to position %d", info->getName(), info->getId()); + xbt_dynar_set_as(current_routing->p_linkUpDownList, info->getId(), s_surf_parsing_link_up_down_t, link_up_down); } /** @@ -153,13 +153,13 @@ static void parse_S_host(sg_platf_host_cbarg_t host) xbt_assert(!xbt_lib_get_or_null(host_lib, host->id, ROUTING_HOST_LEVEL), "Reading a host, processing unit \"%s\" already exists", host->id); - RoutingEdgePtr info = new RoutingEdge(); - info->p_rcComponent = current_routing; - info->p_rcType = SURF_NETWORK_ELEMENT_HOST; - info->p_name = xbt_strdup(host->id); - info->m_id = current_routing->parsePU(info); + RoutingEdgePtr info = new RoutingEdgeImpl(xbt_strdup(host->id), + -1, + SURF_NETWORK_ELEMENT_HOST, + current_routing); + info->setId(current_routing->parsePU(info)); xbt_lib_set(host_lib, host->id, ROUTING_HOST_LEVEL, (void *) info); - XBT_DEBUG("Having set name '%s' id '%d'", host->id, info->m_id); + XBT_DEBUG("Having set name '%s' id '%d'", host->id, info->getId()); if(mount_list){ xbt_lib_set(storage_lib, host->id, ROUTING_STORAGE_HOST_LEVEL, (void *) mount_list); @@ -197,13 +197,13 @@ static void parse_S_router(sg_platf_router_cbarg_t router) "Reading a router, processing unit \"%s\" already exists", router->id); - RoutingEdgePtr info = new RoutingEdge(); - info->p_rcComponent = current_routing; - info->p_rcType = SURF_NETWORK_ELEMENT_ROUTER; - info->p_name = xbt_strdup(router->id); - info->m_id = current_routing->parsePU(info); + RoutingEdgePtr 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->m_id); + XBT_DEBUG("Having set name '%s' id '%d'", router->id, info->getId()); if (router->coord && strcmp(router->coord, "")) { unsigned int cursor; @@ -372,14 +372,16 @@ void routing_AS_begin(sg_platf_AS_cbarg_t AS) new_as->p_hierarchy = SURF_ROUTING_NULL; new_as->p_name = xbt_strdup(AS->id); - RoutingEdgePtr info = new RoutingEdge(); - + RoutingEdgePtr info = new RoutingEdgeImpl(xbt_strdup(new_as->p_name), + -1, + SURF_NETWORK_ELEMENT_AS, + current_routing); if (current_routing == NULL && routing_platf->p_root == NULL) { /* it is the first one */ new_as->p_routingFather = NULL; routing_platf->p_root = new_as; - info->m_id = -1; + info->setId(-1); } else if (current_routing != NULL && routing_platf->p_root != NULL) { xbt_assert(!xbt_dict_get_or_null @@ -394,18 +396,14 @@ void routing_AS_begin(sg_platf_AS_cbarg_t AS) xbt_dict_set(current_routing->p_routingSons, AS->id, (void *) new_as, NULL); /* add to the father element list */ - info->m_id = current_routing->parseAS(info); + info->setId(current_routing->parseAS(info)); } else { THROWF(arg_error, 0, "All defined components must be belong to a AS"); } - info->p_rcComponent = new_as->p_routingFather; - info->p_rcType = SURF_NETWORK_ELEMENT_AS; - info->p_name = xbt_strdup(new_as->p_name); - - xbt_lib_set(as_router_lib, info->p_name, ROUTING_ASR_LEVEL, + xbt_lib_set(as_router_lib, info->getName(), ROUTING_ASR_LEVEL, (void *) info); - XBT_DEBUG("Having set name '%s' id '%d'", new_as->p_name, info->m_id); + XBT_DEBUG("Having set name '%s' id '%d'", new_as->p_name, info->getId()); /* set the new current component of the tree */ current_routing = new_as; @@ -467,11 +465,11 @@ static void elements_father(sg_routing_edge_t src, sg_routing_edge_t dst, /* (1) find the as where the src and dst are located */ sg_routing_edge_t src_data = src; sg_routing_edge_t dst_data = dst; - src_as = src_data->p_rcComponent; - dst_as = dst_data->p_rcComponent; + src_as = src_data->getRcComponent(); + dst_as = dst_data->getRcComponent(); #ifndef NDEBUG - char* src_name = src_data->p_name; - char* dst_name = dst_data->p_name; + char* src_name = src_data->getName(); + char* dst_name = dst_data->getName(); #endif xbt_assert(src_as && dst_as, @@ -529,7 +527,7 @@ static void _get_route_and_latency(RoutingEdgePtr src, RoutingEdgePtr dst, memset(&route,0,sizeof(route)); xbt_assert(src && dst, "bad parameters for \"_get_route_latency\" method"); - XBT_DEBUG("Solve route/latency \"%s\" to \"%s\"", src->p_name, dst->p_name); + XBT_DEBUG("Solve route/latency \"%s\" to \"%s\"", src->getName(), dst->getName()); /* Find how src and dst are interconnected */ AsPtr common_father, src_father, dst_father; @@ -569,7 +567,7 @@ static void _get_route_and_latency(RoutingEdgePtr src, RoutingEdgePtr dst, &route, latency); xbt_assert((route.gw_src != NULL) && (route.gw_dst != NULL), - "bad gateways for route from \"%s\" to \"%s\"", src->p_name, dst->p_name); + "bad gateways for route from \"%s\" to \"%s\"", src->getName(), dst->getName()); sg_routing_edge_t src_gateway_net_elm = route.gw_src; sg_routing_edge_t dst_gateway_net_elm = route.gw_dst; @@ -591,7 +589,7 @@ AS_t surf_platf_get_root(routing_platf_t platf){ } e_surf_network_element_type_t surf_routing_edge_get_rc_type(sg_routing_edge_t edge){ - return edge->p_rcType; + return edge->getRcType(); } @@ -612,7 +610,7 @@ e_surf_network_element_type_t surf_routing_edge_get_rc_type(sg_routing_edge_t ed void RoutingPlatf::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, xbt_dynar_t* route, double *latency) { - XBT_DEBUG("routing_get_route_and_latency from %s to %s", src->p_name, dst->p_name); + XBT_DEBUG("routing_get_route_and_latency from %s to %s", src->getName(), dst->getName()); if (!*route) { xbt_dynar_reset(routing_platf->p_lastRoute); *route = routing_platf->p_lastRoute; @@ -621,7 +619,7 @@ void RoutingPlatf::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, _get_route_and_latency(src, dst, route, latency); xbt_assert(!latency || *latency >= 0.0, - "negative latency on route between \"%s\" and \"%s\"", src->p_name, dst->p_name); + "negative latency on route between \"%s\" and \"%s\"", src->getName(), dst->getName()); } xbt_dynar_t RoutingPlatf::getOneLinkRoutes(){ @@ -653,7 +651,7 @@ e_surf_network_element_type_t routing_get_network_element_type(const char *name) { RoutingEdgePtr rc = sg_routing_edge_by_name_or_null(name); if (rc) - return rc->p_rcType; + return rc->getRcType(); return SURF_NETWORK_ELEMENT_NULL; } @@ -1324,7 +1322,7 @@ xbt_dynar_t surf_AS_get_hosts(AsPtr as) { xbt_dynar_t res = xbt_dynar_new(sizeof(xbt_dictelm_t), NULL); for (index = 0; index < count; index++) { relm = xbt_dynar_get_as(elms, index, RoutingEdgePtr); - delm = xbt_lib_get_elm_or_null(host_lib, relm->p_name); + delm = xbt_lib_get_elm_or_null(host_lib, relm->getName()); if (delm!=NULL) { xbt_dynar_push(res, &delm); } diff --git a/src/surf/surf_routing.hpp b/src/surf/surf_routing.hpp index e4d93c6d0b..5ec9d9e21b 100644 --- a/src/surf/surf_routing.hpp +++ b/src/surf/surf_routing.hpp @@ -91,13 +91,47 @@ public: */ struct RoutingEdge { public: - ~RoutingEdge() { xbt_free(p_name);}; + virtual ~RoutingEdge(){}; + virtual int getId()=0; + virtual int *getIdPtr()=0; + virtual void setId(int id)=0; + virtual char *getName()=0; + virtual AsPtr getRcComponent()=0; + virtual e_surf_network_element_type_t getRcType()=0; +}; + +struct RoutingEdgeImpl : public RoutingEdge { +public: + RoutingEdgeImpl(char *name, int id, e_surf_network_element_type_t rcType, AsPtr rcComponent) + : p_rcComponent(rcComponent), p_rcType(rcType), m_id(id), p_name(name) {} + ~RoutingEdgeImpl() { xbt_free(p_name);}; + + int getId() {return m_id;} + int *getIdPtr() {return &m_id;} + void setId(int id) {m_id = id;} + char *getName() {return p_name;} + AsPtr getRcComponent() {return p_rcComponent;} + e_surf_network_element_type_t getRcType() {return p_rcType;} +private: AsPtr p_rcComponent; e_surf_network_element_type_t p_rcType; int m_id; char *p_name; }; +struct RoutingEdgeWrapper : public RoutingEdge { +public: + RoutingEdgeWrapper(RoutingEdge *re) : p_re(re){} + ~RoutingEdgeWrapper(){} + int getId() {return p_re->getId();} + int *getIdPtr() {return p_re->getIdPtr();} + void setId(int id) {p_re->setId(id);} + char *getName() {return p_re->getName();} + AsPtr getRcComponent() {return p_re->getRcComponent();} + e_surf_network_element_type_t getRcType() {return p_re->getRcType();} +private: + RoutingEdge *p_re; +}; /** @ingroup SURF_routing_interface * @brief Link of lenght 1, alongside with its source and destination. This is mainly usefull in the bindings to gtnets and ns3 diff --git a/src/surf/surf_routing_cluster.cpp b/src/surf/surf_routing_cluster.cpp index 7da22e6049..25cf788bdd 100644 --- a/src/surf/surf_routing_cluster.cpp +++ b/src/surf/surf_routing_cluster.cpp @@ -33,12 +33,12 @@ void AsCluster::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_pl { s_surf_parsing_link_up_down_t info; XBT_VERB("cluster_get_route_and_latency from '%s'[%d] to '%s'[%d]", - src->p_name, src->m_id, dst->p_name, dst->m_id); + src->getName(), src->getId(), dst->getName(), dst->getId()); - if (src->p_rcType != SURF_NETWORK_ELEMENT_ROUTER) { // No specific link for router + if (src->getRcType() != SURF_NETWORK_ELEMENT_ROUTER) { // No specific link for router - if((src->m_id == dst->m_id) && p_has_loopback ){ - info = xbt_dynar_get_as(p_linkUpDownList, src->m_id * p_nb_links_per_node, s_surf_parsing_link_up_down_t); + if((src->getId() == dst->getId()) && p_has_loopback ){ + info = xbt_dynar_get_as(p_linkUpDownList, src->getId() * p_nb_links_per_node, s_surf_parsing_link_up_down_t); xbt_dynar_push_as(route->link_list, void *, info.link_up); if (lat) *lat += static_cast(info.link_up)->getLatency(); @@ -47,11 +47,11 @@ void AsCluster::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_pl if (p_has_limiter){ // limiter for sender - info = xbt_dynar_get_as(p_linkUpDownList, src->m_id * p_nb_links_per_node + p_has_loopback, s_surf_parsing_link_up_down_t); + info = xbt_dynar_get_as(p_linkUpDownList, src->getId() * p_nb_links_per_node + p_has_loopback, s_surf_parsing_link_up_down_t); xbt_dynar_push_as(route->link_list, void *, info.link_up); } - info = xbt_dynar_get_as(p_linkUpDownList, src->m_id * p_nb_links_per_node + p_has_loopback + p_has_limiter, s_surf_parsing_link_up_down_t); + info = xbt_dynar_get_as(p_linkUpDownList, src->getId() * p_nb_links_per_node + p_has_loopback + p_has_limiter, s_surf_parsing_link_up_down_t); if (info.link_up) { // link up xbt_dynar_push_as(route->link_list, void *, info.link_up); if (lat) @@ -66,8 +66,8 @@ void AsCluster::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_pl *lat += p_backbone->getLatency(); } - if (dst->p_rcType != SURF_NETWORK_ELEMENT_ROUTER) { // No specific link for router - info = xbt_dynar_get_as(p_linkUpDownList, dst->m_id * p_nb_links_per_node + p_has_loopback + p_has_limiter, s_surf_parsing_link_up_down_t); + if (dst->getRcType() != SURF_NETWORK_ELEMENT_ROUTER) { // No specific link for router + info = xbt_dynar_get_as(p_linkUpDownList, dst->getId() * p_nb_links_per_node + p_has_loopback + p_has_limiter, s_surf_parsing_link_up_down_t); if (info.link_down) { // link down xbt_dynar_push_as(route->link_list, void *, info.link_down); @@ -75,7 +75,7 @@ void AsCluster::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_pl *lat += static_cast(info.link_down)->getLatency(); } if (p_has_limiter){ // limiter for receiver - info = xbt_dynar_get_as(p_linkUpDownList, dst->m_id * p_nb_links_per_node + p_has_loopback, s_surf_parsing_link_up_down_t); + info = xbt_dynar_get_as(p_linkUpDownList, dst->getId() * p_nb_links_per_node + p_has_loopback, s_surf_parsing_link_up_down_t); xbt_dynar_push_as(route->link_list, void *, info.link_up); } } @@ -93,7 +93,7 @@ void AsCluster::getGraph(xbt_graph_t graph, xbt_dict_t nodes, xbt_dict_t edges) xbt_assert(p_router,"Malformed cluster"); /* create the router */ - char *link_name = p_router->p_name; + char *link_name = p_router->getName(); routerNode = new_xbt_graph_node(graph, link_name, nodes); if(p_backbone) { @@ -106,10 +106,10 @@ void AsCluster::getGraph(xbt_graph_t graph, xbt_dict_t nodes, xbt_dict_t edges) for (isrc = 0; isrc < table_size; isrc++) { src = xbt_dynar_get_as(p_indexNetworkElm, isrc, RoutingEdgePtr); - if (src->p_rcType != SURF_NETWORK_ELEMENT_ROUTER) { - previous = new_xbt_graph_node(graph, src->p_name, nodes); + if (src->getRcType() != SURF_NETWORK_ELEMENT_ROUTER) { + previous = new_xbt_graph_node(graph, src->getName(), nodes); - info = xbt_dynar_get_as(p_linkUpDownList, src->m_id, s_surf_parsing_link_up_down_t); + info = xbt_dynar_get_as(p_linkUpDownList, src->getId(), s_surf_parsing_link_up_down_t); if (info.link_up) { // link up @@ -170,13 +170,13 @@ void AsCluster::create_links_for_node(sg_platf_cluster_cbarg_t cluster, int id, } int AsCluster::parsePU(RoutingEdgePtr elm) { - XBT_DEBUG("Load process unit \"%s\"", elm->p_name); + XBT_DEBUG("Load process unit \"%s\"", elm->getName()); xbt_dynar_push_as(p_indexNetworkElm, RoutingEdgePtr, elm); return xbt_dynar_length(p_indexNetworkElm)-1; } int AsCluster::parseAS(RoutingEdgePtr elm) { - XBT_DEBUG("Load Autonomous system \"%s\"", elm->p_name); + XBT_DEBUG("Load Autonomous system \"%s\"", elm->getName()); xbt_dynar_push_as(p_indexNetworkElm, RoutingEdgePtr, elm); return xbt_dynar_length(p_indexNetworkElm)-1; } diff --git a/src/surf/surf_routing_cluster_torus.cpp b/src/surf/surf_routing_cluster_torus.cpp index 851fc2935b..972254cf10 100644 --- a/src/surf/surf_routing_cluster_torus.cpp +++ b/src/surf/surf_routing_cluster_torus.cpp @@ -117,13 +117,13 @@ void AsClusterTorus::parse_specific_arguments(sg_platf_cluster_cbarg_t cluster){ void AsClusterTorus::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_platf_route_cbarg_t route, double *lat){ XBT_VERB("torus_get_route_and_latency from '%s'[%d] to '%s'[%d]", - src->p_name,src->m_id, - dst->p_name,dst->m_id); + src->getName(), src->getId(), + dst->getName(), dst->getId()); - if (dst->p_rcType == SURF_NETWORK_ELEMENT_ROUTER || src->p_rcType == SURF_NETWORK_ELEMENT_ROUTER) return; + if (dst->getRcType() == SURF_NETWORK_ELEMENT_ROUTER || src->getRcType() == SURF_NETWORK_ELEMENT_ROUTER) return; - if((src->m_id == dst->m_id) && p_has_loopback ){ - s_surf_parsing_link_up_down_t info = xbt_dynar_get_as(p_linkUpDownList, src->m_id * p_nb_links_per_node, s_surf_parsing_link_up_down_t); + if((src->getId() == dst->getId()) && p_has_loopback ){ + s_surf_parsing_link_up_down_t info = xbt_dynar_get_as(p_linkUpDownList, src->getId() * p_nb_links_per_node, s_surf_parsing_link_up_down_t); xbt_dynar_push_as(route->link_list, void *, info.link_up); if (lat) @@ -137,7 +137,7 @@ void AsClusterTorus::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, * TODO Change to dynamic assignment */ unsigned int j, cur_dim, dim_product = 1; - int current_node = src->m_id; + int current_node = src->getId(); int unsigned next_node = 0; /** * Arrays that hold the coordinates of the current node and @@ -146,8 +146,8 @@ void AsClusterTorus::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, * into this dimension or not. */ unsigned int* myCoords, *targetCoords; - myCoords = rankId_to_coords(src->m_id, p_dimensions); - targetCoords = rankId_to_coords(dst->m_id, p_dimensions); + myCoords = rankId_to_coords(src->getId(), p_dimensions); + targetCoords = rankId_to_coords(dst->getId(), p_dimensions); /** * linkOffset describes the offset where the link * we want to use is stored @@ -155,18 +155,18 @@ void AsClusterTorus::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, * which can only be the case if src->m_id == dst->m_id -- see above * for this special case) */ - int nodeOffset = (xbt_dynar_length(p_dimensions)+1)*src->m_id; + int nodeOffset = (xbt_dynar_length(p_dimensions)+1)*src->getId(); int linkOffset = nodeOffset; bool use_lnk_up = false; // Is this link of the form "cur -> next" or "next -> cur"? // false means: next -> cur - while (current_node != dst->m_id) { + while (current_node != dst->getId()) { dim_product = 1; // First, we will route in x-dimension for (j = 0; j < xbt_dynar_length(p_dimensions); j++) { cur_dim = xbt_dynar_get_as(p_dimensions, j, int); // current_node/dim_product = position in current dimension - if ((current_node/dim_product) % cur_dim != (dst->m_id/dim_product) % cur_dim) { + if ((current_node/dim_product) % cur_dim != (dst->getId()/dim_product) % cur_dim) { if (( targetCoords[j] > myCoords[j] && targetCoords[j] <= myCoords[j]+cur_dim/2) // Is the target node on the right, without the wrap-around? || ( myCoords[j] > cur_dim/2 && (myCoords[j]+cur_dim/2)%cur_dim >= targetCoords[j] )) { // Or do we need to use the wrap around to reach it? diff --git a/src/surf/surf_routing_dijkstra.cpp b/src/surf/surf_routing_dijkstra.cpp index 64b1ce7024..7fb24b169d 100644 --- a/src/surf/surf_routing_dijkstra.cpp +++ b/src/surf/surf_routing_dijkstra.cpp @@ -212,11 +212,11 @@ void AsDijkstra::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_p /* set utils vars */ srcDstCheck(src, dst); - int *src_id = &(src->m_id); - int *dst_id = &(dst->m_id); + int *src_id = src->getIdPtr(); + int *dst_id = dst->getIdPtr(); if (!src_id || !dst_id) - THROWF(arg_error,0,"No route from '%s' to '%s'",src->p_name,dst->p_name); + THROWF(arg_error,0,"No route from '%s' to '%s'",src->getName(),dst->getName()); int *pred_arr = NULL; int src_node_id = 0; @@ -248,7 +248,7 @@ void AsDijkstra::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_p xbt_edge_t edge = xbt_graph_get_edge(p_routeGraph, node_s_v, node_e_v); if (edge == NULL) - THROWF(arg_error, 0, "No route from '%s' to '%s'", src->p_name, dst->p_name); + THROWF(arg_error, 0, "No route from '%s' to '%s'", src->getName(), dst->getName()); e_route = (sg_platf_route_cbarg_t) xbt_graph_edge_get_data(edge); @@ -341,7 +341,7 @@ void AsDijkstra::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_p xbt_graph_get_edge(p_routeGraph, node_pred_v, node_v); if (edge == NULL) - THROWF(arg_error, 0, "No route from '%s' to '%s'", src->p_name, dst->p_name); + THROWF(arg_error, 0, "No route from '%s' to '%s'", src->getName(), dst->getName()); prev_gw_src = gw_src; @@ -353,12 +353,12 @@ void AsDijkstra::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_p first_gw = gw_dst; if (p_hierarchy == SURF_ROUTING_RECURSIVE && v != dst_node_id - && strcmp(gw_dst->p_name, prev_gw_src->p_name)) { + && strcmp(gw_dst->getName(), prev_gw_src->getName())) { xbt_dynar_t e_route_as_to_as=NULL; routing_platf->getRouteAndLatency(gw_dst_net_elm, prev_gw_src_net_elm, &e_route_as_to_as, NULL); if (edge == NULL) - THROWF(arg_error,0,"No route from '%s' to '%s'", src->p_name, dst->p_name); + THROWF(arg_error,0,"No route from '%s' to '%s'", src->getName(), dst->getName()); links = e_route_as_to_as; int pos = 0; xbt_dynar_foreach(links, cpt, link) { @@ -472,12 +472,12 @@ void AsDijkstra::parseRoute(sg_platf_route_cbarg_t route) XBT_DEBUG("Load Route from \"%s\" to \"%s\"", src, dst); else{ XBT_DEBUG("Load ASroute from \"%s(%s)\" to \"%s(%s)\"", src, - route->gw_src->p_name, dst, route->gw_dst->p_name); + route->gw_src->getName(), dst, route->gw_dst->getName()); as_route = 1; - if(route->gw_dst->p_rcType == SURF_NETWORK_ELEMENT_NULL) - xbt_die("The gw_dst '%s' does not exist!",route->gw_dst->p_name); - if(route->gw_src->p_rcType == SURF_NETWORK_ELEMENT_NULL) - xbt_die("The gw_src '%s' does not exist!",route->gw_src->p_name); + if(route->gw_dst->getRcType() == SURF_NETWORK_ELEMENT_NULL) + xbt_die("The gw_dst '%s' does not exist!",route->gw_dst->getName()); + if(route->gw_src->getRcType() == SURF_NETWORK_ELEMENT_NULL) + xbt_die("The gw_src '%s' does not exist!",route->gw_src->getName()); } RoutingEdgePtr src_net_elm, dst_net_elm; @@ -498,7 +498,7 @@ void AsDijkstra::parseRoute(sg_platf_route_cbarg_t route) p_routeCache = xbt_dict_new_homogeneous(&route_cache_elem_free); sg_platf_route_cbarg_t e_route = newExtendedRoute(p_hierarchy, route, 1); - newRoute(src_net_elm->m_id, dst_net_elm->m_id, e_route); + newRoute(src_net_elm->getId(), dst_net_elm->getId(), e_route); // Symmetrical YES if ( (route->symmetrical == TRUE && as_route == 0) @@ -509,11 +509,11 @@ void AsDijkstra::parseRoute(sg_platf_route_cbarg_t route) XBT_DEBUG("Load Route from \"%s\" to \"%s\"", dst, src); else XBT_DEBUG("Load ASroute from \"%s(%s)\" to \"%s(%s)\"", dst, - route->gw_dst->p_name, src, route->gw_src->p_name); + route->gw_dst->getName(), src, route->gw_src->getName()); xbt_dynar_t nodes = xbt_graph_get_nodes(p_routeGraph); - xbt_node_t node_s_v = xbt_dynar_get_as(nodes, src_net_elm->m_id, xbt_node_t); - xbt_node_t node_e_v = xbt_dynar_get_as(nodes, dst_net_elm->m_id, xbt_node_t); + xbt_node_t node_s_v = xbt_dynar_get_as(nodes, src_net_elm->getId(), xbt_node_t); + xbt_node_t node_e_v = xbt_dynar_get_as(nodes, dst_net_elm->getId(), xbt_node_t); xbt_edge_t edge = xbt_graph_get_edge(p_routeGraph, node_e_v, node_s_v); @@ -527,7 +527,7 @@ void AsDijkstra::parseRoute(sg_platf_route_cbarg_t route) route->gw_dst = gw_tmp; } sg_platf_route_cbarg_t link_route_back = newExtendedRoute(p_hierarchy, route, 0); - newRoute(dst_net_elm->m_id, src_net_elm->m_id, link_route_back); + newRoute(dst_net_elm->getId(), src_net_elm->getId(), link_route_back); } xbt_dynar_free(&route->link_list); } diff --git a/src/surf/surf_routing_floyd.cpp b/src/surf/surf_routing_floyd.cpp index a1d5287134..8b7980c4b1 100644 --- a/src/surf/surf_routing_floyd.cpp +++ b/src/surf/surf_routing_floyd.cpp @@ -90,14 +90,14 @@ void AsFloyd::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_plat /* create a result route */ xbt_dynar_t route_stack = xbt_dynar_new(sizeof(sg_platf_route_cbarg_t), NULL); int pred; - int cur = dst->m_id; + int cur = dst->getId(); do { - pred = TO_FLOYD_PRED(src->m_id, cur); + pred = TO_FLOYD_PRED(src->getId(), cur); if (pred == -1) - THROWF(arg_error, 0, "No route from '%s' to '%s'", src->p_name, dst->p_name); + THROWF(arg_error, 0, "No route from '%s' to '%s'", src->getName(), dst->getName()); xbt_dynar_push_as(route_stack, sg_platf_route_cbarg_t, TO_FLOYD_LINK(pred, cur)); cur = pred; - } while (cur != src->m_id); + } while (cur != src->getId()); if (p_hierarchy == SURF_ROUTING_RECURSIVE) { res->gw_src = xbt_dynar_getlast_as(route_stack, sg_platf_route_cbarg_t)->gw_src; @@ -112,7 +112,7 @@ void AsFloyd::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_plat unsigned int cpt; if (p_hierarchy == SURF_ROUTING_RECURSIVE && prev_dst_gw != NULL - && strcmp(prev_dst_gw->p_name, e_route->gw_src->p_name)) { + && strcmp(prev_dst_gw->getName(), e_route->gw_src->getName())) { routing_get_route_and_latency(prev_dst_gw, e_route->gw_src, &res->link_list, lat); } @@ -175,14 +175,14 @@ void AsFloyd::parseRoute(sg_platf_route_cbarg_t route) else{ as_route = 1; XBT_DEBUG("Load ASroute from \"%s(%s)\" to \"%s(%s)\"", src, - route->gw_src->p_name, dst, route->gw_dst->p_name); - if(route->gw_dst->p_rcType == SURF_NETWORK_ELEMENT_NULL) - xbt_die("The dst_gateway '%s' does not exist!",route->gw_dst->p_name); - if(route->gw_src->p_rcType == SURF_NETWORK_ELEMENT_NULL) - xbt_die("The src_gateway '%s' does not exist!",route->gw_src->p_name); + route->gw_src->getName(), dst, route->gw_dst->getName()); + if(route->gw_dst->getRcType() == SURF_NETWORK_ELEMENT_NULL) + xbt_die("The dst_gateway '%s' does not exist!",route->gw_dst->getName()); + if(route->gw_src->getRcType() == SURF_NETWORK_ELEMENT_NULL) + xbt_die("The src_gateway '%s' does not exist!",route->gw_src->getName()); } - if(TO_FLOYD_LINK(src_net_elm->m_id, dst_net_elm->m_id)) + if(TO_FLOYD_LINK(src_net_elm->getId(), dst_net_elm->getId())) { char * link_name; @@ -195,31 +195,31 @@ void AsFloyd::parseRoute(sg_platf_route_cbarg_t route) xbt_dynar_push(link_route_to_test,&link); } xbt_assert(!xbt_dynar_compare( - TO_FLOYD_LINK(src_net_elm->m_id, dst_net_elm->m_id)->link_list, + TO_FLOYD_LINK(src_net_elm->getId(), dst_net_elm->getId())->link_list, link_route_to_test, (int_f_cpvoid_cpvoid_t) floyd_pointer_resource_cmp), "The route between \"%s\" and \"%s\" already exists", src,dst); } else { - TO_FLOYD_LINK(src_net_elm->m_id, dst_net_elm->m_id) = + TO_FLOYD_LINK(src_net_elm->getId(), dst_net_elm->getId()) = newExtendedRoute(p_hierarchy, route, 1); - TO_FLOYD_PRED(src_net_elm->m_id, dst_net_elm->m_id) = src_net_elm->m_id; - TO_FLOYD_COST(src_net_elm->m_id, dst_net_elm->m_id) = - ((TO_FLOYD_LINK(src_net_elm->m_id, dst_net_elm->m_id))->link_list)->used; /* count of links, old model assume 1 */ + TO_FLOYD_PRED(src_net_elm->getId(), dst_net_elm->getId()) = src_net_elm->getId(); + TO_FLOYD_COST(src_net_elm->getId(), dst_net_elm->getId()) = + ((TO_FLOYD_LINK(src_net_elm->getId(), dst_net_elm->getId()))->link_list)->used; /* count of links, old model assume 1 */ } if ( (route->symmetrical == TRUE && as_route == 0) || (route->symmetrical == TRUE && as_route == 1) ) { - if(TO_FLOYD_LINK(dst_net_elm->m_id, src_net_elm->m_id)) + if(TO_FLOYD_LINK(dst_net_elm->getId(), src_net_elm->getId())) { if(!route->gw_dst && !route->gw_src) XBT_DEBUG("See Route from \"%s\" to \"%s\"", dst, src); else XBT_DEBUG("See ASroute from \"%s(%s)\" to \"%s(%s)\"", dst, - route->gw_src->p_name, src, route->gw_dst->p_name); + route->gw_src->getName(), src, route->gw_dst->getName()); char * link_name; unsigned int i; xbt_dynar_t link_route_to_test = xbt_dynar_new(sizeof(sg_routing_link_t), NULL); @@ -231,7 +231,7 @@ void AsFloyd::parseRoute(sg_platf_route_cbarg_t route) xbt_dynar_push(link_route_to_test,&link); } xbt_assert(!xbt_dynar_compare( - TO_FLOYD_LINK(dst_net_elm->m_id, src_net_elm->m_id)->link_list, + TO_FLOYD_LINK(dst_net_elm->getId(), src_net_elm->getId())->link_list, link_route_to_test, (int_f_cpvoid_cpvoid_t) floyd_pointer_resource_cmp), "The route between \"%s\" and \"%s\" already exists", src,dst); @@ -250,13 +250,13 @@ void AsFloyd::parseRoute(sg_platf_route_cbarg_t route) XBT_DEBUG("Load Route from \"%s\" to \"%s\"", dst, src); else XBT_DEBUG("Load ASroute from \"%s(%s)\" to \"%s(%s)\"", dst, - route->gw_src->p_name, src, route->gw_dst->p_name); + route->gw_src->getName(), src, route->gw_dst->getName()); - TO_FLOYD_LINK(dst_net_elm->m_id, src_net_elm->m_id) = + TO_FLOYD_LINK(dst_net_elm->getId(), src_net_elm->getId()) = newExtendedRoute(p_hierarchy, route, 0); - TO_FLOYD_PRED(dst_net_elm->m_id, src_net_elm->m_id) = dst_net_elm->m_id; - TO_FLOYD_COST(dst_net_elm->m_id, src_net_elm->m_id) = - ((TO_FLOYD_LINK(dst_net_elm->m_id, src_net_elm->m_id))->link_list)->used; /* count of links, old model assume 1 */ + TO_FLOYD_PRED(dst_net_elm->getId(), src_net_elm->getId()) = dst_net_elm->getId(); + TO_FLOYD_COST(dst_net_elm->getId(), src_net_elm->getId()) = + ((TO_FLOYD_LINK(dst_net_elm->getId(), src_net_elm->getId()))->link_list)->used; /* count of links, old model assume 1 */ } } xbt_dynar_free(&route->link_list); diff --git a/src/surf/surf_routing_full.cpp b/src/surf/surf_routing_full.cpp index 02a5168776..0156a8487b 100644 --- a/src/surf/surf_routing_full.cpp +++ b/src/surf/surf_routing_full.cpp @@ -83,9 +83,9 @@ xbt_dynar_t AsFull::getOneLinkRoutes() OnelinkPtr onelink; if (p_hierarchy == SURF_ROUTING_BASE) { RoutingEdgePtr tmp_src = xbt_dynar_get_as(p_indexNetworkElm, src, sg_routing_edge_t); - tmp_src->m_id = src; + tmp_src->setId(src); RoutingEdgePtr tmp_dst = xbt_dynar_get_as(p_indexNetworkElm, dst, sg_routing_edge_t); - tmp_dst->m_id = dst; + tmp_dst->setId(dst); onelink = new Onelink(link, tmp_src, tmp_dst); } else if (p_hierarchy == SURF_ROUTING_RECURSIVE) onelink = new Onelink(link, route->gw_src, route->gw_dst); @@ -105,10 +105,10 @@ xbt_dynar_t AsFull::getOneLinkRoutes() void AsFull::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_platf_route_cbarg_t res, double *lat) { XBT_DEBUG("full_get_route_and_latency from %s[%d] to %s[%d]", - src->p_name, - src->m_id, - dst->p_name, - dst->m_id ); + src->getName(), + src->getId(), + dst->getName(), + dst->getId()); /* set utils vars */ size_t table_size = xbt_dynar_length(p_indexNetworkElm); @@ -117,7 +117,7 @@ void AsFull::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_platf void *link; unsigned int cpt = 0; - e_route = TO_ROUTE_FULL(src->m_id, dst->m_id); + e_route = TO_ROUTE_FULL(src->getId(), dst->getId()); if (e_route) { res->gw_src = e_route->gw_src; @@ -160,7 +160,7 @@ void AsFull::parseRoute(sg_platf_route_cbarg_t route) if (!p_routingTable) p_routingTable = xbt_new0(sg_platf_route_cbarg_t, table_size * table_size); - if (TO_ROUTE_FULL(src_net_elm->m_id, dst_net_elm->m_id)) { + if (TO_ROUTE_FULL(src_net_elm->getId(), dst_net_elm->getId())) { char *link_name; unsigned int i; xbt_dynar_t link_route_to_test = @@ -170,7 +170,7 @@ void AsFull::parseRoute(sg_platf_route_cbarg_t route) xbt_assert(link, "Link : '%s' doesn't exists.", link_name); xbt_dynar_push(link_route_to_test, &link); } - if (xbt_dynar_compare(TO_ROUTE_FULL(src_net_elm->m_id, dst_net_elm->m_id)->link_list, + if (xbt_dynar_compare(TO_ROUTE_FULL(src_net_elm->getId(), dst_net_elm->getId())->link_list, link_route_to_test, full_pointer_resource_cmp)) { surf_parse_error("A route between \"%s\" and \"%s\" already exists " "with a different content. " @@ -213,14 +213,14 @@ void AsFull::parseRoute(sg_platf_route_cbarg_t route) // route->dst_gateway, subas->name); as_route = 1; XBT_DEBUG("Load ASroute from \"%s(%s)\" to \"%s(%s)\"", - src, route->gw_src->p_name, dst, route->gw_dst->p_name); - if (route->gw_dst->p_rcType == SURF_NETWORK_ELEMENT_NULL) - xbt_die("The dst_gateway '%s' does not exist!", route->gw_dst->p_name); - if (route->gw_src->p_rcType == SURF_NETWORK_ELEMENT_NULL) - xbt_die("The src_gateway '%s' does not exist!", route->gw_src->p_name); + src, route->gw_src->getName(), dst, route->gw_dst->getName()); + if (route->gw_dst->getRcType() == SURF_NETWORK_ELEMENT_NULL) + xbt_die("The dst_gateway '%s' does not exist!", route->gw_dst->getName()); + if (route->gw_src->getRcType() == SURF_NETWORK_ELEMENT_NULL) + xbt_die("The src_gateway '%s' does not exist!", route->gw_src->getName()); } - TO_ROUTE_FULL(src_net_elm->m_id, dst_net_elm->m_id) = newExtendedRoute(p_hierarchy, route, 1); - xbt_dynar_shrink(TO_ROUTE_FULL(src_net_elm->m_id, dst_net_elm->m_id)->link_list, 0); + TO_ROUTE_FULL(src_net_elm->getId(), dst_net_elm->getId()) = newExtendedRoute(p_hierarchy, route, 1); + xbt_dynar_shrink(TO_ROUTE_FULL(src_net_elm->getId(), dst_net_elm->getId())->link_list, 0); } if ( (route->symmetrical == TRUE && as_route == 0) @@ -232,7 +232,7 @@ void AsFull::parseRoute(sg_platf_route_cbarg_t route) route->gw_src = route->gw_dst; route->gw_dst = gw_tmp; } - if (TO_ROUTE_FULL(dst_net_elm->m_id, src_net_elm->m_id)) { + if (TO_ROUTE_FULL(dst_net_elm->getId(), src_net_elm->getId())) { char *link_name; unsigned int i; xbt_dynar_t link_route_to_test = @@ -243,7 +243,7 @@ void AsFull::parseRoute(sg_platf_route_cbarg_t route) xbt_assert(link, "Link : '%s' doesn't exists.", link_name); xbt_dynar_push(link_route_to_test, &link); } - xbt_assert(!xbt_dynar_compare(TO_ROUTE_FULL(dst_net_elm->m_id, src_net_elm->m_id)->link_list, + xbt_assert(!xbt_dynar_compare(TO_ROUTE_FULL(dst_net_elm->getId(), src_net_elm->getId())->link_list, link_route_to_test, full_pointer_resource_cmp), "The route between \"%s\" and \"%s\" already exists", src, @@ -253,9 +253,9 @@ void AsFull::parseRoute(sg_platf_route_cbarg_t route) XBT_DEBUG("Load Route from \"%s\" to \"%s\"", dst, src); else XBT_DEBUG("Load ASroute from \"%s(%s)\" to \"%s(%s)\"", - dst, route->gw_src->p_name, src, route->gw_dst->p_name); - TO_ROUTE_FULL(dst_net_elm->m_id, src_net_elm->m_id) = newExtendedRoute(p_hierarchy, route, 0); - xbt_dynar_shrink(TO_ROUTE_FULL(dst_net_elm->m_id, src_net_elm->m_id)->link_list, 0); + dst, route->gw_src->getName(), src, route->gw_dst->getName()); + TO_ROUTE_FULL(dst_net_elm->getId(), src_net_elm->getId()) = newExtendedRoute(p_hierarchy, route, 0); + xbt_dynar_shrink(TO_ROUTE_FULL(dst_net_elm->getId(), src_net_elm->getId())->link_list, 0); } } xbt_dynar_free(&route->link_list); diff --git a/src/surf/surf_routing_generic.cpp b/src/surf/surf_routing_generic.cpp index 8a0a781fec..853f11e97c 100644 --- a/src/surf/surf_routing_generic.cpp +++ b/src/surf/surf_routing_generic.cpp @@ -44,14 +44,14 @@ AsGeneric::~AsGeneric() { int AsGeneric::parsePU(RoutingEdgePtr elm) { - XBT_DEBUG("Load process unit \"%s\"", elm->p_name); + XBT_DEBUG("Load process unit \"%s\"", elm->getName()); xbt_dynar_push_as(p_indexNetworkElm, RoutingEdgePtr, elm); return xbt_dynar_length(p_indexNetworkElm)-1; } int AsGeneric::parseAS(RoutingEdgePtr elm) { - XBT_DEBUG("Load Autonomous system \"%s\"", elm->p_name); + XBT_DEBUG("Load Autonomous system \"%s\"", elm->getName()); xbt_dynar_push_as(p_indexNetworkElm, RoutingEdgePtr, elm); return xbt_dynar_length(p_indexNetworkElm)-1; } @@ -74,7 +74,7 @@ void AsGeneric::parseBypassroute(sg_platf_route_cbarg_t e_route) src, dst); xbt_assert(!xbt_dict_get_or_null(dict_bypassRoutes, route_name), "The bypass route between \"%s\"(\"%s\") and \"%s\"(\"%s\") already exists", - src, e_route->gw_src->p_name, dst, e_route->gw_dst->p_name); + src, e_route->gw_src->getName(), dst, e_route->gw_dst->getName()); sg_platf_route_cbarg_t new_e_route = NULL; if(e_route->gw_dst) @@ -162,7 +162,7 @@ void AsGeneric::getGraph(xbt_graph_t graph, xbt_dict_t nodes, xbt_dict_t edges) getRouteAndLatency(my_src, my_dst, route, NULL); - XBT_DEBUG ("get_route_and_latency %s -> %s", my_src->p_name, my_dst->p_name); + XBT_DEBUG ("get_route_and_latency %s -> %s", my_src->getName(), my_dst->getName()); unsigned int cpt; void *link; @@ -171,11 +171,11 @@ void AsGeneric::getGraph(xbt_graph_t graph, xbt_dict_t nodes, xbt_dict_t edges) const char *previous_name, *current_name; if (route->gw_src) { - previous = new_xbt_graph_node(graph, route->gw_src->p_name, nodes); - previous_name = route->gw_src->p_name; + previous = new_xbt_graph_node(graph, route->gw_src->getName(), nodes); + previous_name = route->gw_src->getName(); } else { - previous = new_xbt_graph_node(graph, my_src->p_name, nodes); - previous_name = my_src->p_name; + previous = new_xbt_graph_node(graph, my_src->getName(), nodes); + previous_name = my_src->getName(); } xbt_dynar_foreach(route->link_list, cpt, link) { @@ -189,11 +189,11 @@ void AsGeneric::getGraph(xbt_graph_t graph, xbt_dict_t nodes, xbt_dict_t edges) } if (route->gw_dst) { - current = new_xbt_graph_node(graph, route->gw_dst->p_name, nodes); - current_name = route->gw_dst->p_name; + current = new_xbt_graph_node(graph, route->gw_dst->getName(), nodes); + current_name = route->gw_dst->getName(); } else { - current = new_xbt_graph_node(graph, my_dst->p_name, nodes); - current_name = my_dst->p_name; + current = new_xbt_graph_node(graph, my_dst->getName(), nodes); + current_name = my_dst->getName(); } new_xbt_graph_edge(graph, previous, current, edges); XBT_DEBUG (" %s -> %s", previous_name, current_name); @@ -209,15 +209,15 @@ sg_platf_route_cbarg_t AsGeneric::getBypassRoute(RoutingEdgePtr src, double *lat) { // If never set a bypass route return NULL without any further computations - XBT_DEBUG("generic_get_bypassroute from %s to %s", src->p_name, dst->p_name); + XBT_DEBUG("generic_get_bypassroute from %s to %s", src->getName(), dst->getName()); if (no_bypassroute_declared) return NULL; sg_platf_route_cbarg_t e_route_bypass = NULL; xbt_dict_t dict_bypassRoutes = p_bypassRoutes; - if(dst->p_rcComponent == this && src->p_rcComponent == this ){ - char *route_name = bprintf("%s#%s", src->p_name, dst->p_name); + if(dst->getRcComponent() == this && src->getRcComponent() == this ){ + char *route_name = bprintf("%s#%s", src->getName(), dst->getName()); e_route_bypass = (sg_platf_route_cbarg_t) xbt_dict_get_or_null(dict_bypassRoutes, route_name); if(e_route_bypass) XBT_DEBUG("Find bypass route with %ld links",xbt_dynar_length(e_route_bypass->link_list)); @@ -234,10 +234,10 @@ sg_platf_route_cbarg_t AsGeneric::getBypassRoute(RoutingEdgePtr src, if (src == NULL || dst == NULL) xbt_die("Ask for route \"from\"(%s) or \"to\"(%s) no found at AS \"%s\"", - src->p_name, dst->p_name, p_name); + src->getName(), dst->getName(), p_name); - src_as = src->p_rcComponent; - dst_as = dst->p_rcComponent; + src_as = src->getRcComponent(); + dst_as = dst->getRcComponent(); /* (2) find the path to the root routing component */ path_src = xbt_dynar_new(sizeof(AsPtr), NULL); @@ -408,7 +408,7 @@ AsPtr AsGeneric::autonomousSystemExist(char *element) char *key; element_as = ((RoutingEdgePtr) xbt_lib_get_or_null(as_router_lib, element, - ROUTING_ASR_LEVEL))->p_rcComponent; + ROUTING_ASR_LEVEL))->getRcComponent(); result = ((AsPtr) - 1); if (element_as != this) result = asExist(element_as); @@ -431,7 +431,7 @@ AsPtr AsGeneric::processingUnitsExist(char *element) AsPtr element_as; element_as = ((RoutingEdgePtr) xbt_lib_get_or_null(host_lib, - element, ROUTING_HOST_LEVEL))->p_rcComponent; + element, ROUTING_HOST_LEVEL))->getRcComponent(); if (element_as == this) return element_as; return asExist(element_as); @@ -445,25 +445,25 @@ void AsGeneric::srcDstCheck(RoutingEdgePtr src, RoutingEdgePtr dst) if (src_data == NULL || dst_data == NULL) xbt_die("Ask for route \"from\"(%s) or \"to\"(%s) no found at AS \"%s\"", - src->p_name, - dst->p_name, + src->getName(), + dst->getName(), p_name); AsPtr src_as = - (src_data)->p_rcComponent; + (src_data)->getRcComponent(); AsPtr dst_as = - (dst_data)->p_rcComponent; + (dst_data)->getRcComponent(); if (src_as != dst_as) xbt_die("The src(%s in %s) and dst(%s in %s) are in differents AS", - src->p_name, src_as->p_name, - dst->p_name, dst_as->p_name); + src->getName(), src_as->p_name, + dst->getName(), dst_as->p_name); if (this != dst_as) xbt_die ("The routing component of src'%s' and dst'%s' is not the same as the network elements belong (%s?=%s?=%s)", - src->p_name, - dst->p_name, + src->getName(), + dst->getName(), src_as->p_name, dst_as->p_name, p_name); diff --git a/src/surf/surf_routing_none.cpp b/src/surf/surf_routing_none.cpp index c17e02d854..79674dd4f5 100644 --- a/src/surf/surf_routing_none.cpp +++ b/src/surf/surf_routing_none.cpp @@ -33,14 +33,14 @@ sg_platf_route_cbarg_t AsNone::getBypassRoute(RoutingEdgePtr /*src*/, RoutingEdg } int AsNone::parsePU(RoutingEdgePtr elm) { - XBT_DEBUG("Load process unit \"%s\"", elm->p_name); + XBT_DEBUG("Load process unit \"%s\"", elm->getName()); xbt_dynar_push_as(p_indexNetworkElm, RoutingEdgePtr, elm); /* don't care about PUs */ return -1; } int AsNone::parseAS(RoutingEdgePtr elm) { - XBT_DEBUG("Load Autonomous system \"%s\"", elm->p_name); + XBT_DEBUG("Load Autonomous system \"%s\"", elm->getName()); xbt_dynar_push_as(p_indexNetworkElm, RoutingEdgePtr, elm); /* even don't care about sub-ASes -- I'm as nihilist as an old punk*/ return -1; diff --git a/src/surf/surf_routing_vivaldi.cpp b/src/surf/surf_routing_vivaldi.cpp index da190cd356..d213c3d4f8 100644 --- a/src/surf/surf_routing_vivaldi.cpp +++ b/src/surf/surf_routing_vivaldi.cpp @@ -22,11 +22,11 @@ void AsVivaldi::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_pl s_surf_parsing_link_up_down_t info; XBT_DEBUG("vivaldi_get_route_and_latency from '%s'[%d] '%s'[%d]", - src->p_name, src->m_id, dst->p_name, dst->m_id); + src->getName(), src->getId(), dst->getName(), dst->getId()); - if(src->p_rcType == SURF_NETWORK_ELEMENT_AS) { - char *src_name = ROUTER_PEER(src->p_name); - char *dst_name = ROUTER_PEER(dst->p_name); + if(src->getRcType() == SURF_NETWORK_ELEMENT_AS) { + char *src_name = ROUTER_PEER(src->getName()); + char *dst_name = ROUTER_PEER(dst->getName()); route->gw_src = (sg_routing_edge_t) xbt_lib_get_or_null(as_router_lib, src_name, ROUTING_ASR_LEVEL); route->gw_dst = (sg_routing_edge_t) xbt_lib_get_or_null(as_router_lib, dst_name, ROUTING_ASR_LEVEL); xbt_free(src_name); @@ -37,11 +37,11 @@ void AsVivaldi::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_pl xbt_dynar_t src_ctn, dst_ctn; char *tmp_src_name, *tmp_dst_name; - if(src->p_rcType == SURF_NETWORK_ELEMENT_HOST){ - tmp_src_name = HOST_PEER(src->p_name); + if(src->getRcType() == SURF_NETWORK_ELEMENT_HOST){ + tmp_src_name = HOST_PEER(src->getName()); if(p_linkUpDownList){ - info = xbt_dynar_get_as(p_linkUpDownList, src->m_id, s_surf_parsing_link_up_down_t); + info = xbt_dynar_get_as(p_linkUpDownList, src->getId(), s_surf_parsing_link_up_down_t); if(info.link_up) { // link up xbt_dynar_push_as(route->link_list, void*, info.link_up); if (lat) @@ -49,21 +49,21 @@ void AsVivaldi::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_pl } } src_ctn = (xbt_dynar_t) xbt_lib_get_or_null(host_lib, tmp_src_name, COORD_HOST_LEVEL); - if(!src_ctn ) src_ctn = (xbt_dynar_t) xbt_lib_get_or_null(host_lib, src->p_name, COORD_HOST_LEVEL); + if(!src_ctn ) src_ctn = (xbt_dynar_t) xbt_lib_get_or_null(host_lib, src->getName(), COORD_HOST_LEVEL); } - else if(src->p_rcType == SURF_NETWORK_ELEMENT_ROUTER || src->p_rcType == SURF_NETWORK_ELEMENT_AS){ - tmp_src_name = ROUTER_PEER(src->p_name); + else if(src->getRcType() == SURF_NETWORK_ELEMENT_ROUTER || src->getRcType() == SURF_NETWORK_ELEMENT_AS){ + tmp_src_name = ROUTER_PEER(src->getName()); src_ctn = (xbt_dynar_t) xbt_lib_get_or_null(as_router_lib, tmp_src_name, COORD_ASR_LEVEL); } else{ THROW_IMPOSSIBLE; } - if(dst->p_rcType == SURF_NETWORK_ELEMENT_HOST){ - tmp_dst_name = HOST_PEER(dst->p_name); + if(dst->getRcType() == SURF_NETWORK_ELEMENT_HOST){ + tmp_dst_name = HOST_PEER(dst->getName()); if(p_linkUpDownList){ - info = xbt_dynar_get_as(p_linkUpDownList, dst->m_id, s_surf_parsing_link_up_down_t); + info = xbt_dynar_get_as(p_linkUpDownList, dst->getId(), s_surf_parsing_link_up_down_t); if(info.link_down) { // link down xbt_dynar_push_as(route->link_list,void*,info.link_down); if (lat) @@ -71,10 +71,10 @@ void AsVivaldi::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_pl } } dst_ctn = (xbt_dynar_t) xbt_lib_get_or_null(host_lib, tmp_dst_name, COORD_HOST_LEVEL); - if(!dst_ctn ) dst_ctn = (xbt_dynar_t) xbt_lib_get_or_null(host_lib, dst->p_name, COORD_HOST_LEVEL); + if(!dst_ctn ) dst_ctn = (xbt_dynar_t) xbt_lib_get_or_null(host_lib, dst->getName(), COORD_HOST_LEVEL); } - else if(dst->p_rcType == SURF_NETWORK_ELEMENT_ROUTER || dst->p_rcType == SURF_NETWORK_ELEMENT_AS){ - tmp_dst_name = ROUTER_PEER(dst->p_name); + else if(dst->getRcType() == SURF_NETWORK_ELEMENT_ROUTER || dst->getRcType() == SURF_NETWORK_ELEMENT_AS){ + tmp_dst_name = ROUTER_PEER(dst->getName()); dst_ctn = (xbt_dynar_t) xbt_lib_get_or_null(as_router_lib, tmp_dst_name, COORD_ASR_LEVEL); } else{ @@ -96,7 +96,7 @@ void AsVivaldi::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_pl } int AsVivaldi::parsePU(RoutingEdgePtr elm) { - XBT_DEBUG("Load process unit \"%s\"", elm->p_name); + XBT_DEBUG("Load process unit \"%s\"", elm->getName()); xbt_dynar_push_as(p_indexNetworkElm, sg_routing_edge_t, elm); return xbt_dynar_length(p_indexNetworkElm)-1; } diff --git a/src/surf/vm_workstation_hl13.cpp b/src/surf/vm_workstation_hl13.cpp index 66b3c6a09a..3488cd7b43 100644 --- a/src/surf/vm_workstation_hl13.cpp +++ b/src/surf/vm_workstation_hl13.cpp @@ -252,7 +252,7 @@ WorkstationVMHL13::WorkstationVMHL13(WorkstationVMModelPtr model, const char* na * from the VM name, we have to make sure that the system does not call the * free callback for the network resource object. The network resource object * is still used by the physical machine. */ - p_netElm = static_cast(xbt_lib_get_or_null(host_lib, sub_ws->getName(), ROUTING_HOST_LEVEL)); + p_netElm = new RoutingEdgeWrapper(static_cast(xbt_lib_get_or_null(host_lib, sub_ws->getName(), ROUTING_HOST_LEVEL))); xbt_lib_set(host_lib, name, ROUTING_HOST_LEVEL, p_netElm); p_subWs = sub_ws;