X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/e7fd02bb2873388f1cacd8458104c37db9068208..fb5dcd3589886a5f3845bbdd77fab5edbb82a842:/src/instr/instr_interface.cpp diff --git a/src/instr/instr_interface.cpp b/src/instr/instr_interface.cpp index 824af31f8b..245e6092a7 100644 --- a/src/instr/instr_interface.cpp +++ b/src/instr/instr_interface.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2010-2020. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2010-2021. 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. */ @@ -9,21 +9,21 @@ #include "src/surf/network_interface.hpp" #include "src/surf/surf_private.hpp" #include "surf/surf.hpp" +#include "xbt/random.hpp" #include #include -#include enum class InstrUserVariable { DECLARE, SET, ADD, SUB }; XBT_LOG_NEW_DEFAULT_SUBCATEGORY (instr_api, instr, "API"); -std::set created_categories; -std::set declared_marks; -std::set user_host_variables; -std::set user_vm_variables; -std::set user_link_variables; +std::set> created_categories; +std::set> declared_marks; +std::set> user_host_variables; +std::set> user_vm_variables; +std::set> user_link_variables; -static xbt_dynar_t instr_set_to_dynar(const std::set& filter) +static xbt_dynar_t instr_set_to_dynar(const std::set>& filter) { if (not TRACE_is_enabled() || not TRACE_needs_platform()) return nullptr; @@ -58,7 +58,7 @@ void TRACE_category(const char *category) /** @ingroup TRACE_category * @brief Declare a new category with a color. * - * Same as #TRACE_category, but let user specify a color encoded as a RGB-like string with three floats from 0 to 1. + * Same as #TRACE_category, but let user specify a color encoded as an RGB-like string with three floats from 0 to 1. * So, to specify a red color, pass "1 0 0" as color parameter. A light-gray color can be specified using "0.7 0.7 0.7" * as color. This function has no effect if a category with the same name has been already declared. * @@ -82,18 +82,16 @@ void TRACE_category_with_color (const char *category, const char *color) //check if category is already created if (created_categories.find(category) != created_categories.end()) return; - else - created_categories.insert(category); + + created_categories.emplace(category); //define final_color std::string final_color; if (not color) { //generate a random color - static std::default_random_engine rnd_engine; - std::uniform_real_distribution prng(0.0, std::nextafter(1.0, 2.0)); - double red = prng(rnd_engine); - double green = prng(rnd_engine); - double blue = prng(rnd_engine); + double red = simgrid::xbt::random::uniform_real(0.0, std::nextafter(1.0, 2.0)); + double green = simgrid::xbt::random::uniform_real(0.0, std::nextafter(1.0, 2.0)); + double blue = simgrid::xbt::random::uniform_real(0.0, std::nextafter(1.0, 2.0)); final_color = std::to_string(red) + " " + std::to_string(green) + " " + std::to_string(blue); }else{ final_color = std::string(color); @@ -150,7 +148,7 @@ void TRACE_declare_mark(const char *mark_type) XBT_DEBUG("MARK,declare %s", mark_type); simgrid::instr::Container::get_root()->type_->by_name_or_create(mark_type); - declared_marks.insert(mark_type); + declared_marks.emplace(mark_type); } /** @ingroup TRACE_mark @@ -260,7 +258,8 @@ xbt_dynar_t TRACE_get_marks () } 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) + 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 */ if (not TRACE_is_enabled() || not TRACE_needs_platform()) @@ -298,12 +297,10 @@ static void instr_user_srcdst_variable(double time, const char *src, const char const char *father_type, double value, InstrUserVariable what) { simgrid::kernel::routing::NetPoint* src_elm = sg_netpoint_by_name_or_null(src); - if (not src_elm) - xbt_die("Element '%s' not found!",src); + xbt_assert(src_elm, "Element '%s' not found!", src); simgrid::kernel::routing::NetPoint* dst_elm = sg_netpoint_by_name_or_null(dst); - if (not dst_elm) - xbt_die("Element '%s' not found!",dst); + xbt_assert(dst_elm, "Element '%s' not found!", dst); std::vector route; simgrid::kernel::routing::NetZoneImpl::get_global_route(src_elm, dst_elm, route, nullptr); @@ -316,7 +313,7 @@ static void instr_user_srcdst_variable(double time, const char *src, const char * * The graph topology will have the following properties: all hosts, links and routers of the platform file are mapped * to graph nodes; routes are mapped to edges. - * The platform's AS are not represented in the output. + * The platform's zones are not represented in the output. * * @param filename The name of the file that will hold the graph. * @@ -324,14 +321,7 @@ static void instr_user_srcdst_variable(double time, const char *src, const char */ int TRACE_platform_graph_export_graphviz (const char *filename) { - /* returns 1 if successful, 0 otherwise */ - if (not TRACE_is_enabled()) - return 0; - xbt_graph_t g = instr_routing_platform_graph(); - if (g == nullptr) - return 0; - instr_routing_platform_graph_export_graphviz (g, filename); - xbt_graph_free_graph(g, xbt_free_f, xbt_free_f, nullptr); + simgrid::instr::platform_graph_export_graphviz(filename); return 1; }