X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/962510fd94a2c10c6873d41acdf2798a8af7f706..95a02a8febe84fd1c2ed98c78c594a5e8a0116f7:/src/instr/instr_interface.cpp diff --git a/src/instr/instr_interface.cpp b/src/instr/instr_interface.cpp index 3cea149dd1..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,7 +177,8 @@ 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); } else { @@ -233,12 +233,13 @@ 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::getRootContainer(), type, + new simgrid::instr::NewEvent(MSG_get_clock(), simgrid::instr::Container::getRoot(), type, type->getEntityValue(mark_value)); } } @@ -258,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 */ @@ -266,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; @@ -308,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); } @@ -939,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 @@ -958,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 @@ -974,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