X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/3dba6de3215d84cbfc2913a75c807e85c8c20667..d14c66f6c7877bc190551b6a33b5fb6f3998dd6a:/src/instr/jedule/jedule_sd_binding.cpp diff --git a/src/instr/jedule/jedule_sd_binding.cpp b/src/instr/jedule/jedule_sd_binding.cpp index cf20f1366d..33497fa88e 100644 --- a/src/instr/jedule/jedule_sd_binding.cpp +++ b/src/instr/jedule/jedule_sd_binding.cpp @@ -1,140 +1,64 @@ -/* Copyright (c) 2010-2015. 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 "xbt/asserts.h" -#include "xbt/dynar.h" +#include "simgrid/jedule/jedule.hpp" +#include "src/simdag/simdag_private.hpp" -#include "src/surf/surf_private.h" -#include "surf/surf.h" +#include "simgrid/s4u/Engine.hpp" +#include "simgrid/s4u/NetZone.hpp" -#include "simgrid/jedule/jedule_sd_binding.h" -#include "simgrid/jedule/jedule_events.h" -#include "simgrid/jedule/jedule_platform.h" -#include "simgrid/jedule/jedule_output.h" - -#include "simgrid/simdag.h" -#include "src/simdag/simdag_private.h" - -#include "simgrid/s4u/As.hpp" -#include "simgrid/s4u/engine.hpp" - -#include - -#if HAVE_JEDULE +#if SIMGRID_HAVE_JEDULE XBT_LOG_NEW_CATEGORY(jedule, "Logging specific to Jedule"); XBT_LOG_NEW_DEFAULT_SUBCATEGORY(jed_sd, jedule, "Logging specific to Jedule SD binding"); -jedule_t jedule; +jedule_t my_jedule; void jedule_log_sd_event(SD_task_t task) { - jed_event_t event; - xbt_assert(task != nullptr); - xbt_dynar_t host_list = xbt_dynar_new(sizeof(char*), nullptr); - - for(auto host: *task->allocation){ - const char *hostname = sg_host_get_name(host); - xbt_dynar_push(host_list, &hostname); - } - - create_jed_event(&event, (char*)SD_task_get_name(task), task->start_time, task->finish_time,"SD"); - - jed_event_add_resources(event, host_list); - jedule_store_event(event); - - xbt_dynar_free(&host_list); + jed_event_t event = new simgrid::jedule::Event(std::string(SD_task_get_name(task)), + SD_task_get_start_time(task), SD_task_get_finish_time(task), "SD"); + event->addResources(task->allocation); + my_jedule->event_set.push_back(event); } -static void create_hierarchy(AS_t current_comp, jed_simgrid_container_t current_container) -{ - xbt_dict_cursor_t cursor = nullptr; - char *key; - AS_t elem; - xbt_dict_t routing_sons = current_comp->children(); - - if (xbt_dict_is_empty(routing_sons)) { - // I am no AS - // add hosts to jedule platform - xbt_dynar_t table = current_comp->hosts(); - xbt_dynar_t hosts; - unsigned int dynar_cursor; - sg_host_t host_elem; - - hosts = xbt_dynar_new(sizeof(char*), nullptr); - - xbt_dynar_foreach(table, dynar_cursor, host_elem) { - xbt_dynar_push_as(hosts, const char*, sg_host_get_name(host_elem)); - } - - jed_simgrid_add_resources(current_container, hosts); - xbt_dynar_free(&hosts); - xbt_dynar_free(&table); - } else { - xbt_dict_foreach(routing_sons, cursor, key, elem) { - jed_simgrid_container_t child_container; - jed_simgrid_create_container(&child_container, elem->name()); - jed_simgrid_add_container(current_container, child_container); - XBT_DEBUG("name : %s\n", elem->name()); - create_hierarchy(elem, child_container); - } - } -} - -void jedule_setup_platform() +void jedule_sd_init() { - jed_create_jedule(&jedule); + sg_netzone_t root_comp = simgrid::s4u::Engine::get_instance()->getNetRoot(); + XBT_DEBUG("root name %s\n", root_comp->get_cname()); - AS_t root_comp = simgrid::s4u::Engine::instance()->rootAs(); - XBT_DEBUG("root name %s\n", root_comp->name()); + my_jedule = new simgrid::jedule::Jedule(); - jed_simgrid_container_t root_container; - jed_simgrid_create_container(&root_container, root_comp->name()); - jedule->root_container = root_container; - - create_hierarchy(root_comp, root_container); + jed_container_t root_container = new simgrid::jedule::Container(std::string(root_comp->get_cname())); + root_container->createHierarchy(root_comp); + my_jedule->root_container = root_container; } -void jedule_sd_cleanup() +void jedule_sd_exit() { - jedule_cleanup_output(); -} - -void jedule_sd_init() -{ - jedule_init_output(); -} - -void jedule_sd_exit(void) -{ - if (jedule) { - jed_free_jedule(jedule); - jedule = nullptr; - } + delete my_jedule; } void jedule_sd_dump(const char * filename) { - if (jedule) { + if (my_jedule) { char *fname; - FILE *fh; - if (!filename) { + if (not filename) { fname = bprintf("%s.jed", xbt_binary_name); } else { fname = xbt_strdup(filename); } - fh = fopen(fname, "w"); + FILE *fh = fopen(fname, "w"); - write_jedule_output(fh, jedule, jedule_event_list, nullptr); + my_jedule->writeOutput(fh); fclose(fh); - free(fname); + xbt_free(fname); } } #endif