Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Free process_id, plus reindent.
[simgrid.git] / src / instr / jedule / jedule_sd_binding.c
index dd3f433..2932fc6 100644 (file)
@@ -1,12 +1,8 @@
-/*
- * jedule_sd_binding.c
- *
- *  Created on: Dec 2, 2010
- *      Author: sascha
- */
+/* Copyright (c) 2010-2013. The SimGrid Team.
+ * All rights reserved.                                                     */
 
-
-#include <stdio.h>
+/* 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"
@@ -20,6 +16,8 @@
 #include "instr/jedule/jedule_platform.h"
 #include "instr/jedule/jedule_output.h"
 
+#include <stdio.h>
+
 #ifdef HAVE_JEDULE
 
 XBT_LOG_NEW_CATEGORY(jedule, "Logging specific to Jedule");
@@ -28,7 +26,8 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(jed_sd, jedule,
 
 jedule_t jedule;
 
-void jedule_log_sd_event(SD_task_t task) {
+void jedule_log_sd_event(SD_task_t task)
+{
   xbt_dynar_t host_list;
   jed_event_t event;
   int i;
@@ -38,7 +37,7 @@ void jedule_log_sd_event(SD_task_t task) {
   host_list = xbt_dynar_new(sizeof(char*), NULL);
 
   for(i=0; i<task->workstation_nb; i++) {
-    char *hostname = (char*)surf_resource_name(task->workstation_list[i]->surf_workstation);
+    char *hostname = sg_host_name(task->workstation_list[i]);
     xbt_dynar_push(host_list, &hostname);
   }
 
@@ -55,7 +54,8 @@ void jedule_log_sd_event(SD_task_t task) {
 }
 
 static void create_hierarchy(AS_t current_comp,
-    jed_simgrid_container_t current_container) {
+                             jed_simgrid_container_t current_container)
+{
   xbt_dict_cursor_t cursor = NULL;
   unsigned int dynar_cursor;
   char *key;
@@ -69,15 +69,13 @@ static void create_hierarchy(AS_t current_comp,
 
     hosts = xbt_dynar_new(sizeof(char*), NULL);
 
-    xbt_dynar_foreach(current_comp->index_network_elm, 
+    xbt_dynar_foreach(current_comp->index_network_elm,
           dynar_cursor, network_elem) {
-      char *hostname;
-      hostname = strdup(network_elem->name);
-      xbt_dynar_push(hosts, &hostname);
+      xbt_dynar_push_as(hosts, char*, network_elem->name);
     }
 
     jed_simgrid_add_resources(current_container, hosts);
-
+    xbt_dynar_free(&hosts);
   } else {
     xbt_dict_foreach(current_comp->routing_sons, cursor, key, elem) {
       jed_simgrid_container_t child_container;
@@ -89,8 +87,8 @@ static void create_hierarchy(AS_t current_comp,
   }
 }
 
-void jedule_setup_platform() {
-
+void jedule_setup_platform()
+{
   AS_t root_comp;
   // e_surf_network_element_type_t type;
 
@@ -113,30 +111,40 @@ void jedule_setup_platform() {
 }
 
 
-void jedule_sd_cleanup() {
-
+void jedule_sd_cleanup()
+{
   jedule_cleanup_output();
 }
 
-void jedule_sd_init() {
-
+void jedule_sd_init()
+{
   jedule_init_output();
 }
 
-void jedule_sd_dump() {
-  FILE *fh;
+void jedule_sd_exit(void)
+{
+  if (jedule) {
+    jed_free_jedule(jedule);
+    jedule = NULL;
+  }
+}
+
+void jedule_sd_dump()
+{
+  if (jedule) {
+    FILE *fh;
     char fname[1024];
 
     fname[0] = '\0';
     strcat(fname, xbt_binary_name);
     strcat(fname, ".jed\0");
-    
-  fh = fopen(fname, "w");
 
-  write_jedule_output(fh, jedule, jedule_event_list, NULL);
+    fh = fopen(fname, "w");
 
-  fclose(fh);
+    write_jedule_output(fh, jedule, jedule_event_list, NULL);
 
+    fclose(fh);
+  }
 }
 
 #endif