X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/dd89cc2577e61b4b86b1ae7bc58dfa2ad00747e6..15b8076f674f48a030ad906cc8aec57df2fbbd61:/src/instr/instr_interface.cpp diff --git a/src/instr/instr_interface.cpp b/src/instr/instr_interface.cpp index 3d002d6e9d..c5003871ad 100644 --- a/src/instr/instr_interface.cpp +++ b/src/instr/instr_interface.cpp @@ -1,15 +1,14 @@ -/* Copyright (c) 2010-2017. The SimGrid Team. - * All rights reserved. */ +/* Copyright (c) 2010-2018. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ +#include "simgrid/kernel/routing/NetPoint.hpp" #include "simgrid_config.h" #include "src/instr/instr_private.hpp" -#include "src/kernel/routing/NetPoint.hpp" #include "src/surf/network_interface.hpp" #include "src/surf/surf_private.hpp" -#include "surf/surf.h" +#include "surf/surf.hpp" #include enum InstrUserVariable { INSTR_US_DECLARE, INSTR_US_SET, INSTR_US_ADD, INSTR_US_SUB }; @@ -148,7 +147,7 @@ void TRACE_declare_mark(const char *mark_type) } XBT_DEBUG("MARK,declare %s", mark_type); - simgrid::instr::Type::getRootType()->getOrCreateEventType(mark_type); + simgrid::instr::Container::getRoot()->type_->getOrCreateEventType(mark_type); declared_marks.insert(mark_type); } @@ -178,16 +177,17 @@ void TRACE_declare_mark_value_with_color (const char *mark_type, const char *mar if (not mark_value) THROWF (tracing_error, 1, "mark_value is nullptr"); - simgrid::instr::Type* type = simgrid::instr::Type::getRootType()->byName(mark_type); + simgrid::instr::EventType* type = + static_cast(simgrid::instr::Container::getRoot()->type_->byName(mark_type)); if (not type) { THROWF (tracing_error, 1, "mark_type with name (%s) is not declared", mark_type); - } - - if (not mark_color) - mark_color = "1.0 1.0 1.0" /*white*/; + } else { + if (not mark_color) + mark_color = "1.0 1.0 1.0" /*white*/; - XBT_DEBUG("MARK,declare_value %s %s %s", mark_type, mark_value, mark_color); - type->addEntityValue(mark_value, mark_color); + XBT_DEBUG("MARK,declare_value %s %s %s", mark_type, mark_value, mark_color); + type->addEntityValue(mark_value, mark_color); + } } /** \ingroup TRACE_mark @@ -233,13 +233,15 @@ void TRACE_mark(const char *mark_type, const char *mark_value) THROWF (tracing_error, 1, "mark_value is nullptr"); //check if mark_type is already declared - simgrid::instr::Type* type = simgrid::instr::Type::getRootType()->byName(mark_type); + simgrid::instr::EventType* type = + static_cast(simgrid::instr::Container::getRoot()->type_->byName(mark_type)); if (not type) { THROWF (tracing_error, 1, "mark_type with name (%s) is not declared", mark_type); + } else { + XBT_DEBUG("MARK %s %s", mark_type, mark_value); + new simgrid::instr::NewEvent(MSG_get_clock(), simgrid::instr::Container::getRoot(), type, + type->getEntityValue(mark_value)); } - - XBT_DEBUG("MARK %s %s", mark_type, mark_value); - new simgrid::instr::NewEvent(MSG_get_clock(), PJ_container_get_root(), type, type->getEntityValue(mark_value)); } /** \ingroup TRACE_mark @@ -257,7 +259,7 @@ xbt_dynar_t TRACE_get_marks () return instr_set_to_dynar(&declared_marks); } -static void instr_user_variable(double time, const char* resource, const char* variable, const char* father_type, +static void instr_user_variable(double time, const char* resource, const char* variable_name, const char* father_type, double value, InstrUserVariable what, const char* color, std::set* filter) { /* safe switches. tracing has to be activated and if platform is not traced, we don't allow user variables */ @@ -265,27 +267,24 @@ static void instr_user_variable(double time, const char* resource, const char* v return; //check if variable is already declared - auto created = filter->find(variable); + auto created = filter->find(variable_name); if (what == INSTR_US_DECLARE){ if (created == filter->end()) { // not declared yet - filter->insert(variable); - instr_new_user_variable_type(father_type, variable, color == nullptr ? "" : color); + filter->insert(variable_name); + instr_new_user_variable_type(father_type, variable_name, color == nullptr ? "" : color); } }else{ if (created != filter->end()) { // declared, let's work - char valuestr[100]; - snprintf(valuestr, 100, "%g", value); - container_t container = simgrid::instr::Container::byName(resource); - simgrid::instr::Type* type = container->type_->byName(variable); + simgrid::instr::VariableType* variable = simgrid::instr::Container::byName(resource)->getVariable(variable_name); switch (what){ case INSTR_US_SET: - new simgrid::instr::SetVariableEvent(time, container, type, value); + variable->setEvent(time, value); break; case INSTR_US_ADD: - new simgrid::instr::AddVariableEvent(time, container, type, value); + variable->addEvent(time, value); break; case INSTR_US_SUB: - new simgrid::instr::SubVariableEvent(time, container, type, value); + variable->subEvent(time, value); break; default: THROW_IMPOSSIBLE; @@ -307,7 +306,7 @@ static void instr_user_srcdst_variable(double time, const char *src, const char xbt_die("Element '%s' not found!",dst); std::vector route; - simgrid::kernel::routing::NetZoneImpl::getGlobalRoute(src_elm, dst_elm, &route, nullptr); + simgrid::kernel::routing::NetZoneImpl::getGlobalRoute(src_elm, dst_elm, route, nullptr); for (auto const& link : route) instr_user_variable(time, link->getCname(), variable, father_type, value, what, nullptr, &user_link_variables); } @@ -938,10 +937,9 @@ void TRACE_host_state_declare_value (const char *state, const char *value, const */ void TRACE_host_set_state(const char* host, const char* state_name, const char* value_name) { - container_t container = simgrid::instr::Container::byName(host); - simgrid::instr::Type* state = container->type_->byName(state_name); + simgrid::instr::StateType* state = simgrid::instr::Container::byName(host)->getState(state_name); state->addEntityValue(value_name); - new simgrid::instr::SetStateEvent(MSG_get_clock(), container, state, state->getEntityValue(value_name)); + state->setEvent(value_name); } /** \ingroup TRACE_user_variables @@ -957,10 +955,7 @@ void TRACE_host_set_state(const char* host, const char* state_name, const char* */ void TRACE_host_push_state(const char* host, const char* state_name, const char* value_name) { - container_t container = simgrid::instr::Container::byName(host); - simgrid::instr::Type* state = container->type_->byName(state_name); - state->addEntityValue(value_name); - new simgrid::instr::PushStateEvent(MSG_get_clock(), container, state, state->getEntityValue(value_name)); + simgrid::instr::Container::byName(host)->getState(state_name)->pushEvent(value_name); } /** \ingroup TRACE_user_variables @@ -973,11 +968,9 @@ void TRACE_host_push_state(const char* host, const char* state_name, const char* * * \see TRACE_host_state_declare, TRACE_host_set_state, TRACE_host_push_state, TRACE_host_reset_state */ -void TRACE_host_pop_state (const char *host, const char *state) +void TRACE_host_pop_state(const char* host, const char* state_name) { - container_t container = simgrid::instr::Container::byName(host); - simgrid::instr::Type* type = container->type_->byName(state); - new simgrid::instr::PopStateEvent(MSG_get_clock(), container, type); + simgrid::instr::Container::byName(host)->getState(state_name)->popEvent(); } /** \ingroup TRACE_API