Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' of framagit.org:Adrien.Gougeon/simgrid into master
[simgrid.git] / examples / c / platform-failures / platform-failures.c
index 725e31f06d2d562820e5fba795e50f16ca4fc4f5..34e0eafe89257a24c65edb8510e506d8c7df9e4b 100644 (file)
@@ -25,7 +25,7 @@ static void master(int argc, char* argv[])
   xbt_assert(argc == 5);
   long number_of_tasks  = xbt_str_parse_int(argv[1], "Invalid amount of tasks: %s");
   double task_comp_size = xbt_str_parse_double(argv[2], "Invalid computational size: %s");
-  double task_comm_size = xbt_str_parse_double(argv[3], "Invalid communication size: %s");
+  long task_comm_size   = xbt_str_parse_int(argv[3], "Invalid communication size: %s");
   long workers_count    = xbt_str_parse_int(argv[4], "Invalid amount of workers: %s");
 
   XBT_INFO("Got %ld workers and %ld tasks to process", workers_count, number_of_tasks);
@@ -90,7 +90,6 @@ static void worker(int argc, char* argv[])
 {
   xbt_assert(argc == 2);
   char mailbox_name[80];
-  double* payload;
   long id = xbt_str_parse_int(argv[1], "Invalid argument %s");
 
   snprintf(mailbox_name, 79, "worker-%ld", id);
@@ -98,6 +97,7 @@ static void worker(int argc, char* argv[])
 
   while (1) {
     XBT_INFO("Waiting a message on %s", mailbox_name);
+    double* payload;
     sg_comm_t comm     = sg_mailbox_get_async(mailbox, (void**)&payload);
     sg_error_t retcode = sg_comm_wait(comm);
     if (retcode == SG_OK) {
@@ -105,10 +105,11 @@ static void worker(int argc, char* argv[])
         free(payload);
         break;
       } else {
+        double comp_size = *payload;
+        free(payload);
         XBT_INFO("Start execution...");
-        sg_actor_execute(*payload);
+        sg_actor_execute(comp_size);
         XBT_INFO("Execution complete.");
-        free(payload);
       }
     } else if (retcode == SG_ERROR_NETWORK) {
       XBT_INFO("Mmh. Something went wrong. Nevermind. Let's keep going!");