From 40f06f46a9e51c6f74227178d4911f811ce4f769 Mon Sep 17 00:00:00 2001 From: Lucas Schnorr Date: Thu, 28 Apr 2011 15:41:59 +0200 Subject: [PATCH] [trace] controlling the callbacks and push/pop of containers based on TRACE_needs_platform --- src/instr/instr_routing.c | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/src/instr/instr_routing.c b/src/instr/instr_routing.c index 6ee93c3b84..4dc65be472 100644 --- a/src/instr/instr_routing.c +++ b/src/instr/instr_routing.c @@ -154,30 +154,33 @@ static void instr_routing_parse_start_AS () container_t root = newContainer (A_surfxml_AS_id, INSTR_AS, NULL); instr_paje_init (root); - currentContainer = xbt_dynar_new (sizeof(container_t), NULL); - xbt_dynar_push (currentContainer, &root); - if (TRACE_smpi_is_enabled()) { if (!TRACE_smpi_is_grouped()){ - container_t father = *(container_t*)xbt_dynar_get_ptr(currentContainer, xbt_dynar_length(currentContainer)-1); - type_t mpi = getContainerType("MPI", father->type); + type_t mpi = getContainerType("MPI", root->type); getStateType ("MPI_STATE", mpi); getLinkType ("MPI_LINK", getRootType(), mpi, mpi); } } + if (TRACE_needs_platform()){ + currentContainer = xbt_dynar_new (sizeof(container_t), NULL); + xbt_dynar_push (currentContainer, &root); + } return; } - container_t father = *(container_t*)xbt_dynar_get_ptr(currentContainer, xbt_dynar_length(currentContainer)-1); - container_t new = newContainer (A_surfxml_AS_id, INSTR_AS, father); - //push - xbt_dynar_push (currentContainer, &new); + if (TRACE_needs_platform()){ + container_t father = *(container_t*)xbt_dynar_get_ptr(currentContainer, xbt_dynar_length(currentContainer)-1); + container_t new = newContainer (A_surfxml_AS_id, INSTR_AS, father); + xbt_dynar_push (currentContainer, &new); + } } static void instr_routing_parse_end_AS () { - xbt_dynar_pop_ptr (currentContainer); + if (TRACE_needs_platform()){ + xbt_dynar_pop_ptr (currentContainer); + } } static void instr_routing_parse_start_link () @@ -290,10 +293,12 @@ static void instr_routing_parse_end_platform () void instr_routing_define_callbacks () { - if (!TRACE_is_active()) - return; + if (!TRACE_is_enabled()) return; + //always need the call backs to ASes (we need only the root AS), + //to create the rootContainer and the rootType properly surfxml_add_callback(STag_surfxml_AS_cb_list, &instr_routing_parse_start_AS); surfxml_add_callback(ETag_surfxml_AS_cb_list, &instr_routing_parse_end_AS); + if (!TRACE_needs_platform()) return; surfxml_add_callback(STag_surfxml_link_cb_list, &instr_routing_parse_start_link); surfxml_add_callback(ETag_surfxml_link_cb_list, &instr_routing_parse_end_link); surfxml_add_callback(STag_surfxml_host_cb_list, &instr_routing_parse_start_host); -- 2.20.1