X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/cf108868b4eeed4d0d9d343bc68557d7814e18c0..99a6dd9c43f2ad2e2f6da980642f5d0f6fc6c779:/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 d780d3c3d8..ee3c1105da 100644 --- a/src/instr/jedule/jedule_sd_binding.cpp +++ b/src/instr/jedule/jedule_sd_binding.cpp @@ -1,147 +1,68 @@ -/* Copyright (c) 2010-2015. The SimGrid Team. +/* Copyright (c) 2010-2016. 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 "src/surf/surf_private.h" -#include "surf/surf.h" - #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/forward.h" -#include "simgrid/simdag.h" -#include "src/simdag/simdag_private.h" +#include "simgrid/s4u/As.hpp" +#include "simgrid/s4u/engine.hpp" +#include "simgrid/jedule/jedule.hpp" +#include "../../simdag/simdag_private.hpp" -#include - -#ifdef HAVE_JEDULE +#if 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"); +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) { - xbt_dynar_t host_list; - jed_event_t event; - int i; - - xbt_assert(task != NULL); - - host_list = xbt_dynar_new(sizeof(char*), NULL); - - for(i=0; ihost_count; i++) { - const char *hostname = sg_host_get_name(task->host_list[i]); - xbt_dynar_push(host_list, &hostname); - } - - create_jed_event(&event, (char*)SD_task_get_name(task), - task->start_time, task->finish_time,"SD"); + xbt_assert(task != nullptr); - jed_event_add_resources(event, host_list); - jedule_store_event(event); - - xbt_dynar_free(&host_list); -} - -static void create_hierarchy(AS_t current_comp, - jed_simgrid_container_t current_container) -{ - xbt_dict_cursor_t cursor = NULL; - char *key; - AS_t elem; - xbt_dict_t routing_sons = surf_AS_get_routing_sons(current_comp); - - if (xbt_dict_is_empty(routing_sons)) { - // I am no AS - // add hosts to jedule platform - xbt_dynar_t table = surf_AS_get_hosts(current_comp); - xbt_dynar_t hosts; - unsigned int dynar_cursor; - sg_host_t host_elem; - - hosts = xbt_dynar_new(sizeof(char*), NULL); - - 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, surf_AS_get_name(elem)); - jed_simgrid_add_container(current_container, child_container); - XBT_DEBUG("name : %s\n", surf_AS_get_name(elem)); - create_hierarchy(elem, child_container); - } - } + 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); } -void jedule_setup_platform() +void jedule_sd_init() { - AS_t root_comp; - - jed_simgrid_container_t root_container; - - jed_create_jedule(&jedule); + AS_t root_comp = simgrid::s4u::Engine::instance()->rootAs(); + XBT_DEBUG("root name %s\n", root_comp->name()); - root_comp = surf_AS_get_routing_root(); - XBT_DEBUG("root name %s\n", surf_AS_get_name(root_comp)); + my_jedule = new simgrid::jedule::Jedule(); - jed_simgrid_create_container(&root_container, surf_AS_get_name(root_comp)); - jedule->root_container = root_container; - - create_hierarchy(root_comp, root_container); -} - - -void jedule_sd_cleanup() -{ - jedule_cleanup_output(); -} - -void jedule_sd_init() -{ - jedule_init_output(); + jed_container_t root_container = new simgrid::jedule::Container(std::string(root_comp->name())); + root_container->createHierarchy(root_comp); + my_jedule->root_container = root_container; } void jedule_sd_exit(void) { - if (jedule) { - jed_free_jedule(jedule); - jedule = NULL; - } + delete my_jedule; } void jedule_sd_dump(const char * filename) { - if (jedule) { + if (my_jedule) { char *fname; - FILE *fh; if (!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, NULL); + my_jedule->writeOutput(fh); fclose(fh); - free(fname); + xbt_free(fname); } } - #endif