if (argc < 2) {
printf ("Usage: %s platform_file\n", argv[0]);
- printf ("example: %s msg_platform.xml\n", argv[0]);
+ printf ("example: %s sd_platform.xml\n", argv[0]);
exit(1);
}
SD_create_environment(platform_file);
/* creation of the tasks and their dependencies */
- SD_task_t taskA = SD_task_create("Task A", NULL, 10.0);
- SD_task_t taskB = SD_task_create("Task B", NULL, 40.0);
- SD_task_t taskC = SD_task_create("Task C", NULL, 30.0);
- SD_task_t taskD = SD_task_create("Task D", NULL, 60.0);
+ SD_task_t taskA = SD_task_create("Task A", NULL);
+ SD_task_t taskB = SD_task_create("Task B", NULL);
+ SD_task_t taskC = SD_task_create("Task C", NULL);
+ SD_task_t taskD = SD_task_create("Task D", NULL);
-
SD_task_dependency_add(NULL, NULL, taskB, taskA);
SD_task_dependency_add(NULL, NULL, taskC, taskA);
SD_task_dependency_add(NULL, NULL, taskD, taskB);
SD_task_dependency_add(NULL, NULL, taskD, taskC);
/* SD_task_dependency_add(NULL, NULL, taskA, taskD); /\* deadlock */
-/* xbt_ex_t ex; */
-
-/* TRY { */
-/* SD_task_dependency_add(NULL, NULL, taskA, taskA); /\* shouldn't work and must raise an exception *\/ */
-/* xbt_assert0(0, "Hey, I can add a dependency between Task A and Task A!"); */
-/* } */
-/* CATCH (ex) { */
-/* } */
-
-/* TRY { */
-/* SD_task_dependency_add(NULL, NULL, taskA, taskB); /\* shouldn't work and must raise an exception *\/ */
-/* xbt_assert0(0, "Oh oh, I can add an already existing dependency!"); */
-/* } */
-/* CATCH (ex) { */
-/* } */
-
-/* SD_task_dependency_remove(taskA, taskB); */
-
-/* TRY { */
-/* SD_task_dependency_remove(taskC, taskA); /\* shouldn't work and must raise an exception *\/ */
-/* xbt_assert0(0, "Dude, I can remove an unknown dependency!"); */
-/* } */
-/* CATCH (ex) { */
-/* } */
-
-/* TRY { */
-/* SD_task_dependency_remove(taskC, taskC); /\* shouldn't work and must raise an exception *\/ */
-/* xbt_assert0(0, "Wow, I can remove a dependency between Task C and itself!"); */
-/* } */
-/* CATCH (ex) { */
-/* } */
-
-
- /* if everything is ok, no exception is forwarded or rethrown by main() */
-
/* watch points */
/* SD_task_watch(taskB, SD_DONE);*/
SD_task_schedule(taskD, workstation_number, workstation_list,
computation_amount, communication_amount, rate);
- printf("Launching simulation...\n");
- SD_task_t *changed_tasks = SD_simulate(100);
- int i = 0;
+ SD_task_watch(taskC, SD_DONE);
+
+ SD_task_t *changed_tasks;
+ int i;
+
+ changed_tasks = SD_simulate(100);
- printf("Simulation results:\n");
- while(changed_tasks[i] != NULL) {
- switch (SD_task_get_state(changed_tasks[i])) {
- case SD_DONE:
- printf("%s is done.\n", SD_task_get_name(changed_tasks[i]));
- break;
- case SD_FAILED:
- printf("%s is failed.\n", SD_task_get_name(changed_tasks[i]));
- break;
- default:
- printf("Unknown status for %s\n", SD_task_get_name(changed_tasks[i]));
- break;
+ while (changed_tasks[0] != NULL) {
+ printf("Tasks whose state has changed:\n");
+ i = 0;
+ while(changed_tasks[i] != NULL) {
+ switch (SD_task_get_state(changed_tasks[i])) {
+ case SD_SCHEDULED:
+ printf("%s is scheduled.\n", SD_task_get_name(changed_tasks[i]));
+ break;
+ case SD_READY:
+ printf("%s is ready.\n", SD_task_get_name(changed_tasks[i]));
+ break;
+ case SD_RUNNING:
+ printf("%s is running.\n", SD_task_get_name(changed_tasks[i]));
+ break;
+ case SD_DONE:
+ printf("%s is done.\n", SD_task_get_name(changed_tasks[i]));
+ break;
+ case SD_FAILED:
+ printf("%s is failed.\n", SD_task_get_name(changed_tasks[i]));
+ break;
+ default:
+ printf("Unknown status for %s\n", SD_task_get_name(changed_tasks[i]));
+ break;
+ }
+ i++;
}
- i++;
+ free(changed_tasks);
+ changed_tasks = SD_simulate(100);
}
+
free(changed_tasks);
SD_task_destroy(taskA);