X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/96abaedb1360d594bc4e1ac201d6cc5657b42d5b..3d845df082d79ab89649c1a8829eea201ae01085:/examples/simdag/sd_seq_access.c diff --git a/examples/simdag/sd_seq_access.c b/examples/simdag/sd_seq_access.c index d3c41ba882..e5e947d550 100644 --- a/examples/simdag/sd_seq_access.c +++ b/examples/simdag/sd_seq_access.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2006, 2007, 2008, 2009, 2010. The SimGrid Team. +/* Copyright (c) 2006-2015. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -6,7 +6,7 @@ #include #include -#include "simdag/simdag.h" +#include "simgrid/simdag.h" #include "xbt/ex.h" #include "xbt/log.h" @@ -18,10 +18,10 @@ int main(int argc, char **argv) int i; const char *platform_file; const SD_workstation_t *workstations; - SD_task_t taskA, taskB, taskC; + SD_task_t taskA, taskB, taskC, taskD; xbt_dynar_t changed_tasks; - /* initialisation of SD */ + /* initialization of SD */ SD_init(&argc, argv); /* xbt_log_control_set("sd.thres=debug"); */ @@ -39,8 +39,8 @@ int main(int argc, char **argv) /* Change the access mode of the workstations */ workstations = SD_workstation_get_list(); for (i = 0; i < 2; i++) { - SD_workstation_dump(workstations[i]); - + SD_workstation_dump(workstations[i]); + SD_workstation_set_access_mode(workstations[i], SD_WORKSTATION_SEQUENTIAL_ACCESS); XBT_INFO(" Change access mode of %s to %s", @@ -48,31 +48,42 @@ int main(int argc, char **argv) (SD_workstation_get_access_mode(workstations[i]) == SD_WORKSTATION_SEQUENTIAL_ACCESS) ? "sequential" : "shared"); } + /* Well I changed my mind, I want the second workstation to be shared */ + + SD_workstation_set_access_mode(workstations[1], + SD_WORKSTATION_SHARED_ACCESS); + XBT_INFO(" Change access mode of %s to %s", + SD_workstation_get_name(workstations[1]), + (SD_workstation_get_access_mode(workstations[1]) == + SD_WORKSTATION_SEQUENTIAL_ACCESS) ? "sequential" : "shared"); /* creation of the tasks and their dependencies */ taskA = SD_task_create_comp_seq("Task A", NULL, 2e10); taskB = SD_task_create_comm_e2e("Task B", NULL, 2e8); taskC = SD_task_create_comp_seq("Task C", NULL, 1e10); + taskD = SD_task_create_comp_seq("Task D", NULL, 1e11); - /* if everything is ok, no exception is forwarded or rethrown by main() */ + SD_task_dependency_add("B->C", NULL,taskB, taskC); /* watch points */ SD_task_watch(taskA, SD_RUNNING); SD_task_watch(taskB, SD_RUNNING); SD_task_watch(taskC, SD_RUNNING); SD_task_watch(taskC, SD_DONE); + SD_task_watch(taskD, SD_DONE); /* scheduling parameters */ SD_task_schedulel(taskA, 1, workstations[0]); SD_task_schedulel(taskB, 2, workstations[0], workstations[1]); SD_task_schedulel(taskC, 1, workstations[1]); + SD_task_schedulel(taskD, 1, workstations[1]); /* let's launch the simulation! */ while (!xbt_dynar_is_empty(changed_tasks = SD_simulate(-1.0))) { - XBT_INFO(" Simulation was suspended, check workstation states"); + XBT_INFO(" Simulation was suspended, check workstation states"); for (i = 0; i < 2; i++) { - SD_workstation_dump(workstations[i]); + SD_workstation_dump(workstations[i]); } xbt_dynar_free(&changed_tasks); } @@ -83,6 +94,7 @@ int main(int argc, char **argv) SD_task_destroy(taskA); SD_task_destroy(taskB); SD_task_destroy(taskC); + SD_task_destroy(taskD); XBT_DEBUG("Tasks destroyed. Exiting SimDag...");