- if(performer < sd_global->workstation_count){
- // the wanted computer is available
- SD_task_t *task_test = NULL;
- if(order < computer->used)
- task_test = xbt_dynar_get_ptr(computer,order);
- if(task_test != NULL && *task_test != NULL && *task_test != current_job){
- /*the user gives the same order to several tasks*/
+
+ if((seq_or_par == sequential) &&
+ (schedule ||
+ XBT_LOG_ISENABLED(sd_dotparse, xbt_log_priority_verbose))){
+ /* try to take the information to schedule the task only if all is
+ * right*/
+ int performer, order;
+ char *char_performer = agget(node, (char *) "performer");
+ char *char_order = agget(node, (char *) "order");
+ /* performer is the computer which execute the task */
+ performer =
+ ((!char_performer || !strcmp(char_performer,"")) ? -1:atoi(char_performer));
+ /* order is giving the task order on one computer */
+ order = ((!char_order || !strcmp(char_order, ""))? -1:atoi(char_order));
+
+ XBT_DEBUG ("Task '%s' is scheduled on workstation '%d' in position '%d'",
+ task->name, performer, order);
+ xbt_dynar_t computer = NULL;
+ if(performer != -1 && order != -1){
+ /* required parameters are given */
+ computer = xbt_dict_get_or_null(computers, char_performer);
+ if(computer == NULL){
+ computer = xbt_dynar_new(sizeof(SD_task_t), NULL);
+ xbt_dict_set(computers, char_performer, computer, NULL);
+ }
+ if(performer < xbt_lib_length(host_lib)){
+ /* the wanted computer is available */
+ SD_task_t *task_test = NULL;
+ if(order < computer->used)
+ task_test = xbt_dynar_get_ptr(computer,order);
+ if(task_test != NULL && *task_test != NULL && *task_test != task){
+ /* the user gives the same order to several tasks */
+ schedule = false;
+ XBT_VERB("The task %s starts on the computer %s at the position : %s like the task %s",
+ (*task_test)->name, char_performer, char_order,
+ task->name);
+ }else{
+ /* the parameter seems to be ok */
+ xbt_dynar_set_as(computer, order, SD_task_t, task);
+ }
+ }else{
+ /* the platform has not enough processors to schedule the DAG like
+ * the user wants*/
+ schedule = false;
+ XBT_VERB("The schedule is ignored, there are not enough computers");
+ }
+ }
+ else {
+ /* one of required parameters is not given */