X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/597ba1a09c3412c3fd46d4c8e8a8f06bb80b11c2..c079c4a7bf4f49ad41a68427908660d59b5aacdd:/src/simdag/sd_dotloader.c diff --git a/src/simdag/sd_dotloader.c b/src/simdag/sd_dotloader.c index 801315ed4f..ad1b9a8896 100644 --- a/src/simdag/sd_dotloader.c +++ b/src/simdag/sd_dotloader.c @@ -9,6 +9,7 @@ #include "xbt/misc.h" #include "xbt/log.h" #include +#include XBT_LOG_NEW_DEFAULT_SUBCATEGORY(sd_dotparse, sd, "Parsing DOT files"); @@ -87,7 +88,7 @@ static void TRACE_sd_dotloader (SD_task_t task, const char *category) if (category){ if (strlen (category) != 0){ TRACE_category (category); - TRACE_sd_set_task_category (task, category); + SD_task_set_category (task, category); } } } @@ -154,14 +155,14 @@ xbt_dynar_t SD_dotload_with_sched(const char *filename){ xbt_dynar_t SD_dotload_generic(const char * filename) { xbt_assert(filename, "Unable to use a null file descriptor\n"); -//dag_dot = agopen((char*)filename,Agstrictdirected,0); + //dag_dot = agopen((char*)filename,Agstrictdirected,0); FILE *in_file = fopen(filename, "r"); dag_dot = agread(in_file, NIL(Agdisc_t *)); result = xbt_dynar_new(sizeof(SD_task_t), dot_task_free); - files = xbt_dict_new(); - jobs = xbt_dict_new(); - computers = xbt_dict_new(); + files = xbt_dict_new_homogeneous(&dot_task_free); + jobs = xbt_dict_new_homogeneous(NULL); + computers = xbt_dict_new_homogeneous(NULL); root_task = SD_task_create_comp_seq("root", NULL, 0); /* by design the root task is always SCHEDULABLE */ __SD_task_set_state(root_task, SD_SCHEDULABLE); @@ -197,7 +198,7 @@ xbt_dynar_t SD_dotload_generic(const char * filename) unsigned int cpt1, cpt2; SD_task_t newfile = NULL; SD_dependency_t depbefore, depafter; - if (xbt_dynar_length(file->tasks_before) == 0) { + if (xbt_dynar_is_empty(file->tasks_before)) { xbt_dynar_foreach(file->tasks_after, cpt2, depafter) { SD_task_t newfile = SD_task_create_comm_e2e(file->name, NULL, file->amount); @@ -205,7 +206,7 @@ xbt_dynar_t SD_dotload_generic(const char * filename) SD_task_dependency_add(NULL, NULL, newfile, depafter->dst); xbt_dynar_push(result, &newfile); } - } else if (xbt_dynar_length(file->tasks_after) == 0) { + } else if (xbt_dynar_is_empty(file->tasks_after)) { xbt_dynar_foreach(file->tasks_before, cpt2, depbefore) { SD_task_t newfile = SD_task_create_comm_e2e(file->name, NULL, file->amount); @@ -318,7 +319,7 @@ void dot_add_task(Agnode_t * dag_node) computer = xbt_dynar_new(sizeof(SD_task_t), NULL); xbt_dict_set(computers, char_performer, computer, NULL); } - if(performer < host_lib->count){ + if(performer < xbt_lib_length(host_lib)){ // the wanted computer is available SD_task_t *task_test = NULL; if(order < computer->used) @@ -342,7 +343,7 @@ void dot_add_task(Agnode_t * dag_node) else { //one of necessary parameters are not given schedule = false; - XBT_VERB("The schedule is ignored, the task %s is not correctly schedule", current_job->name); + XBT_VERB("The schedule is ignored, the task %s is not correctly scheduled", current_job->name); } } } @@ -353,10 +354,10 @@ void dot_add_task(Agnode_t * dag_node) * edge. */ void dot_add_input_dependencies(SD_task_t current_job, Agedge_t * edge) { - SD_task_t file; + SD_task_t file = NULL; char *name_tail=agnameof(agtail(edge)); char *name_head=agnameof(aghead(edge)); - char *name = malloc((strlen(name_head)+strlen(name_tail)+3)*sizeof(char)); + char *name = malloc((strlen(name_head)+strlen(name_tail)+6)*sizeof(char)); sprintf(name, "%s->%s", name_tail, name_head); double size = dot_parse_double(agget(edge, (char *) "size")); XBT_DEBUG("size : %e, get size : %s", size, agget(edge, (char *) "size")); @@ -368,7 +369,7 @@ void dot_add_input_dependencies(SD_task_t current_job, Agedge_t * edge) #ifdef HAVE_TRACING TRACE_sd_dotloader (file, agget (edge, (char*)"category")); #endif - xbt_dict_set(files, name, file, &dot_task_free); + xbt_dict_set(files, name, file, NULL); } else { if (SD_task_get_amount(file) != size) { XBT_WARN("Ignoring file %s size redefinition from %.0f to %.0f", @@ -377,7 +378,7 @@ void dot_add_input_dependencies(SD_task_t current_job, Agedge_t * edge) } SD_task_dependency_add(NULL, NULL, file, current_job); } else { - file = xbt_dict_get_or_null(jobs, agnameof(agtail(edge))); + file = xbt_dict_get_or_null(jobs, name_tail); if (file != NULL) { SD_task_dependency_add(NULL, NULL, file, current_job); } @@ -394,7 +395,7 @@ void dot_add_output_dependencies(SD_task_t current_job, Agedge_t * edge) SD_task_t file; char *name_tail=agnameof(agtail(edge)); char *name_head=agnameof(aghead(edge)); - char *name = malloc((strlen(name_head)+strlen(name_tail)+3)*sizeof(char)); + char *name = malloc((strlen(name_head)+strlen(name_tail)+6)*sizeof(char)); sprintf(name, "%s->%s", name_tail, name_head); double size = dot_parse_double(agget(edge, (char *) "size")); XBT_DEBUG("size : %e, get size : %s", size, agget(edge, (char *) "size")); @@ -406,7 +407,7 @@ void dot_add_output_dependencies(SD_task_t current_job, Agedge_t * edge) #ifdef HAVE_TRACING TRACE_sd_dotloader (file, agget (edge, (char*)"category")); #endif - xbt_dict_set(files, name, file, &dot_task_free); + xbt_dict_set(files, name, file, NULL); } else { if (SD_task_get_amount(file) != size) { XBT_WARN("Ignoring file %s size redefinition from %.0f to %.0f", @@ -418,7 +419,7 @@ void dot_add_output_dependencies(SD_task_t current_job, Agedge_t * edge) XBT_WARN("File %s created at more than one location...", file->name); } } else { - file = xbt_dict_get_or_null(jobs, agnameof(aghead(edge))); + file = xbt_dict_get_or_null(jobs, name_head); if (file != NULL) { SD_task_dependency_add(NULL, NULL, current_job, file); }