Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge pull request #198 from Takishipp/clear_fct
authorMartin Quinson <martin.quinson@ens-rennes.fr>
Wed, 12 Jul 2017 20:26:36 +0000 (22:26 +0200)
committerGitHub <noreply@github.com>
Wed, 12 Jul 2017 20:26:36 +0000 (22:26 +0200)
Remove an unused function

29 files changed:
.gitignore
examples/msg/CMakeLists.txt
examples/msg/app-pingpong/app-pingpong.c
examples/msg/plugin-hostload/plugin-hostload.c
examples/s4u/CMakeLists.txt
examples/s4u/app-pingpong/s4u_app-pingpong [new file with mode: 0755]
examples/s4u/app-pingpong/s4u_app-pingpong.cpp [new file with mode: 0644]
examples/s4u/app-pingpong/s4u_app-pingpong.tesh [new file with mode: 0644]
examples/s4u/plugin-hostload/s4u_plugin-hostload.cpp [new file with mode: 0644]
examples/s4u/plugin-hostload/s4u_plugin-hostload.tesh [new file with mode: 0644]
include/xbt/function_types.h
src/msg/msg_vm.cpp
src/plugins/vm/VirtualMachineImpl.cpp
src/plugins/vm/VirtualMachineImpl.hpp
src/s4u/s4u_storage.cpp
src/surf/xml/platf.hpp
src/surf/xml/surfxml_sax_cb.cpp
teshsuite/msg/CMakeLists.txt
teshsuite/msg/actions-comm/actions-comm.c [moved from examples/msg/actions-comm/actions-comm.c with 59% similarity]
teshsuite/msg/actions-comm/actions-comm.tesh [moved from examples/msg/actions-comm/actions-comm.tesh with 100% similarity]
teshsuite/msg/actions-comm/actions-comm.txt [moved from examples/msg/actions-comm/actions-comm.txt with 100% similarity]
teshsuite/msg/actions-comm/actions-comm_d.xml [moved from examples/msg/actions-comm/actions-comm_d.xml with 100% similarity]
teshsuite/msg/actions-comm/actions-comm_split_d.xml [moved from examples/msg/actions-comm/actions-comm_split_d.xml with 100% similarity]
teshsuite/msg/actions-comm/actions-comm_split_p0.txt [moved from examples/msg/actions-comm/actions-comm_split_p0.txt with 100% similarity]
teshsuite/msg/actions-comm/actions-comm_split_p1.txt [moved from examples/msg/actions-comm/actions-comm_split_p1.txt with 100% similarity]
teshsuite/msg/actions-storage/actions-storage.c [moved from examples/msg/actions-storage/actions-storage.c with 62% similarity]
teshsuite/msg/actions-storage/actions-storage.tesh [moved from examples/msg/actions-storage/actions-storage.tesh with 100% similarity]
teshsuite/msg/actions-storage/actions-storage.txt [moved from examples/msg/actions-storage/actions-storage.txt with 100% similarity]
teshsuite/msg/actions-storage/actions-storage_d.xml [moved from examples/msg/actions-storage/actions-storage_d.xml with 100% similarity]

index 60839f9..198bcaa 100644 (file)
@@ -193,6 +193,7 @@ examples/s4u/app-token-ring/s4u_app-token-ring
 examples/s4u/actions-comm/s4u_actions-comm
 examples/s4u/actions-storage/s4u_actions-storage
 examples/s4u/actor-create/s4u_actor-create
+examples/s4u/actor-daemon/s4u_actor-daemon
 examples/s4u/actor-kill/s4u_actor-kill
 examples/s4u/actor-migration/s4u_actor-migration
 examples/s4u/actor-suspend/s4u_actor-suspend
@@ -1052,6 +1053,7 @@ teshsuite/smpi/type-struct/type-struct
 teshsuite/smpi/type-vector/type-vector
 teshsuite/s4u/actor/actor
 teshsuite/s4u/comm-pt2pt/comm-pt2pt
+teshsuite/s4u/comm-waitany/comm-waitany
 teshsuite/s4u/concurrent_rw/concurrent_rw
 teshsuite/s4u/host_on_off_wait/host_on_off_wait
 teshsuite/s4u/listen_async/listen_async
index bde4dc9..ca06ab3 100644 (file)
@@ -1,5 +1,5 @@
 # C examples
-foreach(x actions-comm actions-storage app-masterworker app-pingpong app-token-ring async-wait async-waitall 
+foreach(x app-masterworker app-pingpong app-token-ring async-wait async-waitall 
           async-waitany cloud-capping cloud-masterworker cloud-migration cloud-simple cloud-two-tasks
           dht-pastry energy-consumption energy-onoff energy-pstate energy-ptask energy-vm platform-failures 
           io-file io-remote io-storage task-priority 
@@ -51,17 +51,13 @@ foreach (file answer dht-kademlia node routing_table task)
   set(examples_src  ${examples_src}  ${CMAKE_CURRENT_SOURCE_DIR}/dht-kademlia/${file}.c  ${CMAKE_CURRENT_SOURCE_DIR}/dht-kademlia/${file}.h)
 endforeach()
 
-foreach (file actions-comm actions-storage app-bittorrent app-chainsend app-masterworker app-pingpong async-wait
+foreach (file app-bittorrent app-chainsend app-masterworker app-pingpong async-wait
          async-waitall async-waitany dht-kademlia dht-pastry io-remote platform-properties process-yield 
          task-priority)
   set(xml_files    ${xml_files}     ${CMAKE_CURRENT_SOURCE_DIR}/${file}/${file}_d.xml)
 endforeach()
 
-set(txt_files    ${txt_files}     ${CMAKE_CURRENT_SOURCE_DIR}/README.doc
-                                  ${CMAKE_CURRENT_SOURCE_DIR}/actions-comm/actions-comm.txt
-                                  ${CMAKE_CURRENT_SOURCE_DIR}/actions-comm/actions-comm_split_p0.txt
-                                  ${CMAKE_CURRENT_SOURCE_DIR}/actions-comm/actions-comm_split_p1.txt
-                                  ${CMAKE_CURRENT_SOURCE_DIR}/actions-storage/actions-storage.txt          PARENT_SCOPE)
+set(txt_files    ${txt_files}     ${CMAKE_CURRENT_SOURCE_DIR}/README.doc          PARENT_SCOPE)
 set(bin_files    ${bin_files}     ${CMAKE_CURRENT_SOURCE_DIR}/app-bittorrent/generate.py
                                   ${CMAKE_CURRENT_SOURCE_DIR}/dht-kademlia/generate.py
                                   ${CMAKE_CURRENT_SOURCE_DIR}/dht-pastry/generate.py                       PARENT_SCOPE)
@@ -74,8 +70,7 @@ set(tesh_files   ${tesh_files}    ${CMAKE_CURRENT_SOURCE_DIR}/app-bittorrent/app
                                   ${CMAKE_CURRENT_SOURCE_DIR}/app-masterworker/app-masterworker-multicore.tesh
                                   ${CMAKE_CURRENT_SOURCE_DIR}/app-masterworker/app-masterworker-vivaldi.tesh
                                   ${CMAKE_CURRENT_SOURCE_DIR}/network-ns3/network-ns3.tesh                 PARENT_SCOPE)
-set(xml_files    ${xml_files}     ${CMAKE_CURRENT_SOURCE_DIR}/actions-comm/actions-comm_split_d.xml
-                                  ${CMAKE_CURRENT_SOURCE_DIR}/app-masterworker/app-masterworker-multicore_d.xml
+set(xml_files    ${xml_files}     ${CMAKE_CURRENT_SOURCE_DIR}/app-masterworker/app-masterworker-multicore_d.xml
                                   ${CMAKE_CURRENT_SOURCE_DIR}/app-masterworker/app-masterworker-vivaldi_d.xml
                                   ${CMAKE_CURRENT_SOURCE_DIR}/async-wait/async-wait2_d.xml
                                   ${CMAKE_CURRENT_SOURCE_DIR}/async-wait/async-wait3_d.xml
@@ -94,7 +89,7 @@ set(xml_files    ${xml_files}     ${CMAKE_CURRENT_SOURCE_DIR}/actions-comm/actio
                                   ${CMAKE_CURRENT_SOURCE_DIR}/process-startkilltime/start_d.xml
                                   ${CMAKE_CURRENT_SOURCE_DIR}/process-startkilltime/start_kill_d.xml       PARENT_SCOPE)
 
-foreach(x actions-comm actions-storage app-bittorrent app-chainsend app-masterworker app-pingpong app-token-ring
+foreach(x app-bittorrent app-chainsend app-masterworker app-pingpong app-token-ring
           async-wait async-waitall async-waitany cloud-capping cloud-masterworker cloud-migration cloud-simple 
           cloud-two-tasks dht-pastry dht-kademlia platform-failures io-file io-remote io-storage task-priority 
           process-create process-daemon process-join process-kill process-migration process-startkilltime process-suspend process-yield
index 91a5b0f..3e12e81 100644 (file)
@@ -5,7 +5,7 @@
 
 #include "simgrid/msg.h"
 
-XBT_LOG_NEW_DEFAULT_CATEGORY(mag_app_pingpong,"Messages specific for this msg example");
+XBT_LOG_NEW_DEFAULT_CATEGORY(msg_app_pingpong, "Messages specific for this msg example");
 
 static int pinger(int argc, char *argv[])
 {
index a76fcc7..717c54b 100644 (file)
@@ -14,7 +14,7 @@ static int execute_load_test(int argc, char* argv[])
   msg_host_t host = MSG_host_by_name("MyHost1");
 
   XBT_INFO("Initial peak speed: %.0E flop/s; number of flops computed so far: %.0E (should be 0)",
-           MSG_host_get_current_power_peak(host), MSG_host_get_computed_flops(host));
+           MSG_host_get_speed(host), sg_host_get_computed_flops(host));
 
   double start = MSG_get_clock();
   XBT_INFO("Sleep for 10 seconds");
@@ -22,7 +22,7 @@ static int execute_load_test(int argc, char* argv[])
 
   XBT_INFO("Done sleeping %.2fs; peak speed: %.0E flop/s; number of flops computed so far: %.0E (nothing should have "
            "changed)",
-           MSG_get_clock() - start, MSG_host_get_current_power_peak(host), MSG_host_get_computed_flops(host));
+           MSG_get_clock() - start, MSG_host_get_speed(host), sg_host_get_computed_flops(host));
 
   // Run a task
   start            = MSG_get_clock();
@@ -33,13 +33,13 @@ static int execute_load_test(int argc, char* argv[])
 
   XBT_INFO("Done working on my task; this took %.2fs; current peak speed: %.0E flop/s; number of flops computed so "
            "far: %.0E",
-           MSG_get_clock() - start, MSG_host_get_current_power_peak(host), MSG_host_get_computed_flops(host));
+           MSG_get_clock() - start, MSG_host_get_speed(host), sg_host_get_computed_flops(host));
 
   // ========= Change power peak =========
   int pstate = 2;
-  MSG_host_set_pstate(host, pstate);
+  sg_host_set_pstate(host, pstate);
   XBT_INFO("========= Requesting pstate %d (speed should be of %.0E flop/s and is of %.0E flop/s)", pstate,
-           MSG_host_get_power_peak_at(host, pstate), MSG_host_get_current_power_peak(host));
+           MSG_host_get_power_peak_at(host, pstate), MSG_host_get_speed(host));
 
   // Run a second task
   start = MSG_get_clock();
@@ -49,7 +49,7 @@ static int execute_load_test(int argc, char* argv[])
   MSG_task_destroy(task1);
   XBT_INFO("Done working on my task; this took %.2fs; current peak speed: %.0E flop/s; number of flops computed so "
            "far: %.0E",
-           MSG_get_clock() - start, MSG_host_get_current_power_peak(host), MSG_host_get_computed_flops(host));
+           MSG_get_clock() - start, MSG_host_get_speed(host), sg_host_get_computed_flops(host));
 
   start = MSG_get_clock();
   XBT_INFO("========= Requesting a reset of the computation counter");
@@ -57,7 +57,7 @@ static int execute_load_test(int argc, char* argv[])
   XBT_INFO("Sleep for 4 seconds");
   MSG_process_sleep(4);
   XBT_INFO("Done sleeping %.2f s; peak speed: %.0E flop/s; number of flops computed so far: %.0E",
-           MSG_get_clock() - start, MSG_host_get_current_power_peak(host), MSG_host_get_computed_flops(host));
+           MSG_get_clock() - start, MSG_host_get_speed(host), sg_host_get_computed_flops(host));
 
   // =========== Turn the other host off ==========
   XBT_INFO("Turning MyHost2 off, and sleeping another 10 seconds. MyHost2 computed %.0f flops so far.",
@@ -66,7 +66,7 @@ static int execute_load_test(int argc, char* argv[])
   start = MSG_get_clock();
   MSG_process_sleep(10);
   XBT_INFO("Done sleeping %.2f s; peak speed: %.0E flop/s; number of flops computed so far: %.0E",
-           MSG_get_clock() - start, MSG_host_get_current_power_peak(host), MSG_host_get_computed_flops(host));
+           MSG_get_clock() - start, MSG_host_get_speed(host), sg_host_get_computed_flops(host));
   return 0;
 }
 
index dfdc634..72a43da 100644 (file)
@@ -1,5 +1,5 @@
 foreach (example actions-comm actions-storage actor-create actor-daemon actor-kill actor-migration actor-suspend 
-                 app-masterworker app-token-ring io  mutex )
+                 app-masterworker app-pingpong app-token-ring plugin-hostload io mutex )
   add_executable       (s4u_${example}  ${example}/s4u_${example}.cpp)
   target_link_libraries(s4u_${example}  simgrid)
   set_target_properties(s4u_${example}  PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${example})
@@ -32,6 +32,6 @@ set(txt_files     ${txt_files}    ${CMAKE_CURRENT_SOURCE_DIR}/actions-comm/s4u_a
                                   ${CMAKE_CURRENT_SOURCE_DIR}/README.doc                                   PARENT_SCOPE)
 
 foreach(example actions-comm actions-storage actor-create actor-daemon actor-kill actor-migration actor-suspend 
-                 app-masterworker app-token-ring dht-chord io mutex )
+                 app-masterworker app-pingpong app-token-ring dht-chord plugin-hostload io mutex )
   ADD_TESH_FACTORIES(s4u-${example} "thread;ucontext;raw;boost" --setenv bindir=${CMAKE_CURRENT_BINARY_DIR}/${example} --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --cd ${CMAKE_HOME_DIRECTORY}/examples/s4u/${example} s4u_${example}.tesh)
 endforeach()
diff --git a/examples/s4u/app-pingpong/s4u_app-pingpong b/examples/s4u/app-pingpong/s4u_app-pingpong
new file mode 100755 (executable)
index 0000000..bd61f7b
Binary files /dev/null and b/examples/s4u/app-pingpong/s4u_app-pingpong differ
diff --git a/examples/s4u/app-pingpong/s4u_app-pingpong.cpp b/examples/s4u/app-pingpong/s4u_app-pingpong.cpp
new file mode 100644 (file)
index 0000000..d8c0384
--- /dev/null
@@ -0,0 +1,73 @@
+/* Copyright (c) 2007-2017. The SimGrid Team. All rights reserved.          */
+
+/* This program is free software; you can redistribute it and/or modify it
+ * under the terms of the license (GNU LGPL) which comes with this package. */
+
+#include "simgrid/s4u.hpp"
+
+XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_app_pingpong, "Messages specific for this s4u example");
+
+static void pinger(std::vector<std::string> args)
+{
+  xbt_assert(args.size() == 1, "The pinger function one argument from the XML deployment file");
+  XBT_INFO("Ping -> %s", args[0].c_str());
+  xbt_assert(simgrid::s4u::Host::by_name_or_null(args[0]) != nullptr, "Unknown host %s. Stopping Now! ",
+             args[0].c_str());
+
+  /* - Do the ping with a 1-Byte task (latency bound) ... */
+  double* payload = new double();
+  *payload        = simgrid::s4u::Engine::getClock();
+
+  simgrid::s4u::Mailbox::byName(args[0])->put(payload, 1);
+  /* - ... then wait for the (large) pong */
+  double sender_time =
+      *(static_cast<double*>(simgrid::s4u::Mailbox::byName(simgrid::s4u::this_actor::getHost()->getName())->get()));
+
+  double communication_time = simgrid::s4u::Engine::getClock() - sender_time;
+  XBT_INFO("Task received : large communication (bandwidth bound)");
+  XBT_INFO("Pong time (bandwidth bound): %.3f", communication_time);
+}
+
+static void ponger(std::vector<std::string> args)
+{
+  xbt_assert(args.size() == 1, "The ponger function one argument from the XML deployment file");
+  XBT_INFO("Pong -> %s", args[0].c_str());
+  xbt_assert(simgrid::s4u::Host::by_name_or_null(args[0]) != nullptr, "Unknown host %s. Stopping Now! ",
+             args[0].c_str());
+
+  /* - Receive the (small) ping first ....*/
+  double* sender_time =
+      (static_cast<double*>(simgrid::s4u::Mailbox::byName(simgrid::s4u::this_actor::getHost()->getName())->get()));
+  double communication_time = simgrid::s4u::Engine::getClock() - *sender_time;
+  XBT_INFO("Task received : small communication (latency bound)");
+  XBT_INFO(" Ping time (latency bound) %f", communication_time);
+
+  /*  - ... Then send a 1GB pong back (bandwidth bound) */
+  double* payload = new double();
+  *payload        = simgrid::s4u::Engine::getClock();
+  XBT_INFO("task_bw->data = %.3f", *payload);
+
+  simgrid::s4u::Mailbox::byName(args[0])->put(payload, 1e9);
+}
+
+int main(int argc, char* argv[])
+{
+  simgrid::s4u::Engine* e = new simgrid::s4u::Engine(&argc, argv);
+
+  e->loadPlatform(argv[1]);
+  std::vector<std::string> args;
+  args.push_back("Jupiter");
+  simgrid::s4u::Actor::createActor("pinger", simgrid::s4u::Host::by_name("Tremblay"), pinger, args);
+
+  args.pop_back();
+  args.push_back("Tremblay");
+
+  simgrid::s4u::Actor::createActor("ponger", simgrid::s4u::Host::by_name("Jupiter"), ponger, args);
+
+  e->run();
+
+  XBT_INFO("Total simulation time: %.3f", e->getClock());
+  delete e;
+
+  return 0;
+}
diff --git a/examples/s4u/app-pingpong/s4u_app-pingpong.tesh b/examples/s4u/app-pingpong/s4u_app-pingpong.tesh
new file mode 100644 (file)
index 0000000..22a6bb3
--- /dev/null
@@ -0,0 +1,57 @@
+#! ./tesh
+
+p Testing with default compound
+
+$ $SG_TEST_EXENV ${bindir:=.}/s4u_app-pingpong$EXEEXT ${srcdir:=.}/small_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+> [  0.000000] (1:pinger@Tremblay) Ping -> Jupiter
+> [  0.000000] (2:ponger@Jupiter) Pong -> Tremblay
+> [  0.019014] (2:ponger@Jupiter) Task received : small communication (latency bound)
+> [  0.019014] (2:ponger@Jupiter)  Ping time (latency bound) 0.019014
+> [  0.019014] (2:ponger@Jupiter) task_bw->data = 0.019
+> [150.178356] (1:pinger@Tremblay) Task received : large communication (bandwidth bound)
+> [150.178356] (1:pinger@Tremblay) Pong time (bandwidth bound): 150.159
+> [150.178356] (0:maestro@) Total simulation time: 150.178
+
+p Testing the deprecated CM02 network model
+
+$ $SG_TEST_EXENV ${bindir:=.}/s4u_app-pingpong$EXEEXT ${srcdir:=.}/small_platform.xml --cfg=cpu/model:Cas01 --cfg=network/model:CM02 "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+> [  0.000000] (0:maestro@) Configuration change: Set 'cpu/model' to 'Cas01'
+> [  0.000000] (0:maestro@) Configuration change: Set 'network/model' to 'CM02'
+> [  0.000000] (1:pinger@Tremblay) Ping -> Jupiter
+> [  0.000000] (2:ponger@Jupiter) Pong -> Tremblay
+> [  0.001462] (2:ponger@Jupiter) Task received : small communication (latency bound)
+> [  0.001462] (2:ponger@Jupiter)  Ping time (latency bound) 0.001462
+> [  0.001462] (2:ponger@Jupiter) task_bw->data = 0.001
+> [145.639041] (1:pinger@Tremblay) Task received : large communication (bandwidth bound)
+> [145.639041] (1:pinger@Tremblay) Pong time (bandwidth bound): 145.638
+> [145.639041] (0:maestro@) Total simulation time: 145.639
+
+p Testing the surf network Reno fairness model using lagrangian approach
+
+$ $SG_TEST_EXENV ${bindir:=.}/s4u_app-pingpong$EXEEXT ${srcdir:=.}/small_platform.xml "--cfg=host/model:compound cpu/model:Cas01 network/model:Reno" --log=surf_lagrange.thres=critical "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+> [  0.000000] (0:maestro@) Configuration change: Set 'host/model' to 'compound'
+> [  0.000000] (0:maestro@) Configuration change: Set 'cpu/model' to 'Cas01'
+> [  0.000000] (0:maestro@) Configuration change: Set 'network/model' to 'Reno'
+> [  0.000000] (1:pinger@Tremblay) Ping -> Jupiter
+> [  0.000000] (2:ponger@Jupiter) Pong -> Tremblay
+> [  0.019014] (2:ponger@Jupiter) Task received : small communication (latency bound)
+> [  0.019014] (2:ponger@Jupiter)  Ping time (latency bound) 0.019014
+> [  0.019014] (2:ponger@Jupiter) task_bw->data = 0.019
+> [150.178356] (1:pinger@Tremblay) Task received : large communication (bandwidth bound)
+> [150.178356] (1:pinger@Tremblay) Pong time (bandwidth bound): 150.159
+> [150.178356] (0:maestro@) Total simulation time: 150.178
+
+p Testing the surf network Vegas fairness model using lagrangian approach
+
+$ $SG_TEST_EXENV ${bindir:=.}/s4u_app-pingpong$EXEEXT ${srcdir:=.}/small_platform.xml "--cfg=host/model:compound cpu/model:Cas01 network/model:Vegas" "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+> [  0.000000] (0:maestro@) Configuration change: Set 'host/model' to 'compound'
+> [  0.000000] (0:maestro@) Configuration change: Set 'cpu/model' to 'Cas01'
+> [  0.000000] (0:maestro@) Configuration change: Set 'network/model' to 'Vegas'
+> [  0.000000] (1:pinger@Tremblay) Ping -> Jupiter
+> [  0.000000] (2:ponger@Jupiter) Pong -> Tremblay
+> [  0.019014] (2:ponger@Jupiter) Task received : small communication (latency bound)
+> [  0.019014] (2:ponger@Jupiter)  Ping time (latency bound) 0.019014
+> [  0.019014] (2:ponger@Jupiter) task_bw->data = 0.019
+> [150.178356] (1:pinger@Tremblay) Task received : large communication (bandwidth bound)
+> [150.178356] (1:pinger@Tremblay) Pong time (bandwidth bound): 150.159
+> [150.178356] (0:maestro@) Total simulation time: 150.178
diff --git a/examples/s4u/plugin-hostload/s4u_plugin-hostload.cpp b/examples/s4u/plugin-hostload/s4u_plugin-hostload.cpp
new file mode 100644 (file)
index 0000000..3f6efc4
--- /dev/null
@@ -0,0 +1,85 @@
+/* Copyright (c) 2007-2010, 2013-2015. The SimGrid Team.
+ * All rights reserved.                                                     */
+
+/* This program is free software; you can redistribute it and/or modify it
+ * under the terms of the license (GNU LGPL) which comes with this package. */
+
+#include "simgrid/s4u.hpp"
+#include "simgrid/plugins/load.h"
+
+XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_test, "Messages specific for this s4u example");
+
+static void execute_load_test()
+{
+  s4u_Host* host = simgrid::s4u::Host::by_name("MyHost1");
+
+  XBT_INFO("Initial peak speed: %.0E flop/s; number of flops computed so far: %.0E (should be 0)", host->getSpeed(),
+           sg_host_get_computed_flops(host));
+
+  double start = simgrid::s4u::Engine::getClock();
+  XBT_INFO("Sleep for 10 seconds");
+  simgrid::s4u::this_actor::sleep_for(10);
+
+  XBT_INFO("Done sleeping %.2fs; peak speed: %.0E flop/s; number of flops computed so far: %.0E (nothing should have "
+           "changed)",
+           simgrid::s4u::Engine::getClock() - start, host->getSpeed(), sg_host_get_computed_flops(host));
+
+  // Run a task
+  start = simgrid::s4u::Engine::getClock();
+  XBT_INFO("Run a task of %.0E flops", 100E6);
+  simgrid::s4u::this_actor::execute(100E6);
+
+  XBT_INFO("Done working on my task; this took %.2fs; current peak speed: %.0E flop/s; number of flops computed so "
+           "far: %.0E",
+           simgrid::s4u::Engine::getClock() - start, host->getSpeed(), sg_host_get_computed_flops(host));
+
+  // ========= Change power peak =========
+  int pstate = 2;
+  host->setPstate(pstate);
+  XBT_INFO("========= Requesting pstate %d (speed should be of %.0E flop/s and is of %.0E flop/s)", pstate,
+           host->getPstateSpeed(pstate), host->getSpeed());
+
+  // Run a second task
+  start = simgrid::s4u::Engine::getClock();
+  XBT_INFO("Run a task of %.0E flops", 100E6);
+  simgrid::s4u::this_actor::execute(100E6);
+  XBT_INFO("Done working on my task; this took %.2fs; current peak speed: %.0E flop/s; number of flops computed so "
+           "far: %.0E",
+           simgrid::s4u::Engine::getClock() - start, host->getSpeed(), sg_host_get_computed_flops(host));
+
+  start = simgrid::s4u::Engine::getClock();
+  XBT_INFO("========= Requesting a reset of the computation counter");
+  sg_host_load_reset(host);
+  XBT_INFO("Sleep for 4 seconds");
+  simgrid::s4u::this_actor::sleep_for(4);
+  XBT_INFO("Done sleeping %.2f s; peak speed: %.0E flop/s; number of flops computed so far: %.0E",
+           simgrid::s4u::Engine::getClock() - start, host->getSpeed(), sg_host_get_computed_flops(host));
+
+  // =========== Turn the other host off ==========
+  s4u_Host* host2 = simgrid::s4u::Host::by_name("MyHost2");
+  XBT_INFO("Turning MyHost2 off, and sleeping another 10 seconds. MyHost2 computed %.0f flops so far.",
+           sg_host_get_computed_flops(host2));
+  host2->turnOff();
+  start = simgrid::s4u::Engine::getClock();
+  simgrid::s4u::this_actor::sleep_for(10);
+  XBT_INFO("Done sleeping %.2f s; peak speed: %.0E flop/s; number of flops computed so far: %.0E",
+           simgrid::s4u::Engine::getClock() - start, host->getSpeed(), sg_host_get_computed_flops(host));
+}
+
+int main(int argc, char* argv[])
+{
+  sg_host_load_plugin_init();
+  simgrid::s4u::Engine* e = new simgrid::s4u::Engine(&argc, argv);
+
+  xbt_assert(argc == 2, "Usage: %s platform_file\n\tExample: %s msg_platform.xml\n", argv[0], argv[0]);
+  e->loadPlatform(argv[1]);
+
+  simgrid::s4u::Actor::createActor("load_test", simgrid::s4u::Host::by_name("MyHost1"), execute_load_test);
+
+  e->run();
+
+  XBT_INFO("Total simulation time: %.2f", simgrid::s4u::Engine::getClock());
+
+  delete e;
+  return 0;
+}
diff --git a/examples/s4u/plugin-hostload/s4u_plugin-hostload.tesh b/examples/s4u/plugin-hostload/s4u_plugin-hostload.tesh
new file mode 100644 (file)
index 0000000..5e9b67e
--- /dev/null
@@ -0,0 +1,19 @@
+#! ./tesh
+
+p This tests the HostLoad plugin (this allows the user to get the current load of a host and the computed flops)
+
+$ ${bindir:=.}/s4u_plugin-hostload$EXEEXT ${srcdir:=.}/../platforms/energy_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+> [  0.000000] (1:load_test@MyHost1) Initial peak speed: 1E+08 flop/s; number of flops computed so far: 0E+00 (should be 0)
+> [  0.000000] (1:load_test@MyHost1) Sleep for 10 seconds
+> [ 10.000000] (1:load_test@MyHost1) Done sleeping 10.00s; peak speed: 1E+08 flop/s; number of flops computed so far: 0E+00 (nothing should have changed)
+> [ 10.000000] (1:load_test@MyHost1) Run a task of 1E+08 flops
+> [ 11.000000] (1:load_test@MyHost1) Done working on my task; this took 1.00s; current peak speed: 1E+08 flop/s; number of flops computed so far: 1E+08
+> [ 11.000000] (1:load_test@MyHost1) ========= Requesting pstate 2 (speed should be of 2E+07 flop/s and is of 2E+07 flop/s)
+> [ 11.000000] (1:load_test@MyHost1) Run a task of 1E+08 flops
+> [ 16.000000] (1:load_test@MyHost1) Done working on my task; this took 5.00s; current peak speed: 2E+07 flop/s; number of flops computed so far: 2E+08
+> [ 16.000000] (1:load_test@MyHost1) ========= Requesting a reset of the computation counter
+> [ 16.000000] (1:load_test@MyHost1) Sleep for 4 seconds
+> [ 20.000000] (1:load_test@MyHost1) Done sleeping 4.00 s; peak speed: 2E+07 flop/s; number of flops computed so far: 0E+00
+> [ 20.000000] (1:load_test@MyHost1) Turning MyHost2 off, and sleeping another 10 seconds. MyHost2 computed 0 flops so far.
+> [ 30.000000] (1:load_test@MyHost1) Done sleeping 10.00 s; peak speed: 2E+07 flop/s; number of flops computed so far: 0E+00
+> [ 30.000000] (0:maestro@) Total simulation time: 30.00
index 2f67456..03aec81 100644 (file)
@@ -18,7 +18,6 @@ typedef void *(*pvoid_f_void_t) (void);
 typedef void *(*pvoid_f_pvoid_t) (void *);
 typedef void (*void_f_void_t) (void);
 
-typedef int (*int_f_void_t) (void);
 typedef int (*int_f_pvoid_t) (void*);
 
 typedef int (*int_f_pvoid_pvoid_t) (void *, void *);
index 79ebf4e..2eb403d 100644 (file)
@@ -365,18 +365,15 @@ static int migration_rx_fun(int argc, char *argv[])
 static void start_dirty_page_tracking(msg_vm_t vm)
 {
   vm->pimpl_vm_->dp_enabled = 1;
-  if (not vm->pimpl_vm_->dp_objs)
+  if (vm->pimpl_vm_->dp_objs.empty())
     return;
 
-  char *key = nullptr;
-  xbt_dict_cursor_t cursor = nullptr;
-  dirty_page_t dp = nullptr;
-  xbt_dict_foreach (vm->pimpl_vm_->dp_objs, cursor, key, dp) {
+  for (auto elm : vm->pimpl_vm_->dp_objs) {
+    dirty_page_t dp    = elm.second;
     double remaining = MSG_task_get_flops_amount(dp->task);
     dp->prev_clock = MSG_get_clock();
     dp->prev_remaining = remaining;
-
-    // XBT_INFO("%s@%s remaining %f", key, sg_host_name(vm), remaining);
+    XBT_DEBUG("%s@%s remaining %f", elm.first.c_str(), vm->getCname(), remaining);
   }
 }
 
@@ -385,7 +382,7 @@ static void stop_dirty_page_tracking(msg_vm_t vm)
   vm->pimpl_vm_->dp_enabled = 0;
 }
 
-static double get_computed(char *key, msg_vm_t vm, dirty_page_t dp, double remaining, double clock)
+static double get_computed(const char* key, msg_vm_t vm, dirty_page_t dp, double remaining, double clock)
 {
   double computed = dp->prev_remaining - remaining;
   double duration = clock - dp->prev_clock;
@@ -400,10 +397,9 @@ static double lookup_computed_flop_counts(msg_vm_t vm, int stage_for_fancy_debug
 {
   double total = 0;
 
-  char *key = nullptr;
-  xbt_dict_cursor_t cursor = nullptr;
-  dirty_page_t dp = nullptr;
-  xbt_dict_foreach (vm->pimpl_vm_->dp_objs, cursor, key, dp) {
+  for (auto elm : vm->pimpl_vm_->dp_objs) {
+    const char* key  = elm.first.c_str();
+    dirty_page_t dp  = elm.second;
     double remaining = MSG_task_get_flops_amount(dp->task);
 
     double clock = MSG_get_clock();
@@ -443,10 +439,7 @@ void MSG_host_add_task(msg_host_t host, msg_task_t task)
     dp->prev_clock = MSG_get_clock();
     dp->prev_remaining = remaining;
   }
-  if (not vm->pimpl_vm_->dp_objs)
-    vm->pimpl_vm_->dp_objs = xbt_dict_new_homogeneous(nullptr);
-  xbt_assert(xbt_dict_get_or_null(vm->pimpl_vm_->dp_objs, key) == nullptr);
-  xbt_dict_set(vm->pimpl_vm_->dp_objs, key, dp, nullptr);
+  vm->pimpl_vm_->dp_objs.insert({key, dp});
   XBT_DEBUG("add %s on %s (remaining %f, dp_enabled %d)", key, host->getCname(), remaining, vm->pimpl_vm_->dp_enabled);
 
   xbt_free(key);
@@ -459,8 +452,10 @@ void MSG_host_del_task(msg_host_t host, msg_task_t task)
     return;
 
   char *key = bprintf("%s-%p", task->name, task);
-  dirty_page_t dp = (dirty_page_t)(vm->pimpl_vm_->dp_objs ? xbt_dict_get_or_null(vm->pimpl_vm_->dp_objs, key) : NULL);
-  xbt_assert(dp->task == task);
+  dirty_page_t dp = nullptr;
+  if (vm->pimpl_vm_->dp_objs.find(key) != vm->pimpl_vm_->dp_objs.end())
+    dp = vm->pimpl_vm_->dp_objs.at(key);
+  xbt_assert(dp && dp->task == task);
 
   /* If we are in the middle of dirty page tracking, we record how much computation has been done until now, and keep
    * the information for the lookup_() function that will called soon. */
@@ -472,8 +467,8 @@ void MSG_host_del_task(msg_host_t host, msg_task_t task)
 
     vm->pimpl_vm_->dp_updated_by_deleted_tasks += updated;
   }
-  if (vm->pimpl_vm_->dp_objs)
-    xbt_dict_remove(vm->pimpl_vm_->dp_objs, key);
+
+  vm->pimpl_vm_->dp_objs.erase(key);
   xbt_free(dp);
 
   XBT_DEBUG("del %s on %s", key, host->getCname());
index 019fd79..a3b4a0a 100644 (file)
@@ -126,21 +126,18 @@ VirtualMachineImpl::~VirtualMachineImpl()
     allVms_.erase(iter);
 
   /* dirty page tracking */
-  unsigned int size          = xbt_dict_size(dp_objs);
+  unsigned int size          = dp_objs.size();
   static bool already_warned = false;
   if (size > 0 && not already_warned) {
-    xbt_dict_cursor_t cursor = nullptr;
-    xbt_dict_cursor_first(dp_objs, &cursor);
+    auto front = dp_objs.begin();
     XBT_WARN("Dirty page tracking: %u pending task(s) on a destroyed VM (first one is %s).\n"
              "If you don't understand why your task was not properly removed, please report that bug.\n"
              "This is a known bug if you turned the host off during the VM execution.\n"
              "Please remind us of that problem at some point: our code base is not ready to fix this harmless issue in "
              "2016, sorry.",
-             size, (xbt_log_no_loc ? "(name hidden)" : xbt_dict_cursor_get_key(cursor)));
-    xbt_dict_cursor_free(&cursor);
+             size, (xbt_log_no_loc ? "(name hidden)" : front->first.c_str()));
     already_warned = true;
   }
-  xbt_dict_free(&dp_objs);
 
   /* Free the cpu_action of the VM. */
   XBT_ATTRIB_UNUSED int ret = action_->unref();
index 797bfb0..1063bf1 100644 (file)
@@ -8,6 +8,7 @@
 #include "src/surf/HostImpl.hpp"
 #include <algorithm>
 #include <deque>
+#include <unordered_map>
 
 #ifndef VM_INTERFACE_HPP_
 #define VM_INTERFACE_HPP_
@@ -15,6 +16,8 @@
 #define GUESTOS_NOISE 100 // This value corresponds to the cost of the global action associated to the VM
                           // It corresponds to the cost of a VM running no tasks.
 
+typedef struct dirty_page* dirty_page_t;
+
 namespace simgrid {
 namespace vm {
 
@@ -86,8 +89,8 @@ public:
   surf::Action* action_ = nullptr;
 
   /* Dirty pages stuff */
+  std::unordered_map<std::string, dirty_page_t> dp_objs;
   int dp_enabled                     = 0;
-  xbt_dict_t dp_objs                 = nullptr;
   double dp_updated_by_deleted_tasks = 0;
 
 protected:
index 60a9142..f746562 100644 (file)
@@ -67,12 +67,12 @@ xbt_dict_t Storage::getProperties()
 
 const char* Storage::getProperty(const char* key)
 {
-  return static_cast<const char*>(xbt_dict_get_or_null(this->getProperties(), key));
+  return this->pimpl_->getProperty(key);
 }
 
 void Storage::setProperty(const char* key, char* value)
 {
-  xbt_dict_set(this->getProperties(), key, value, nullptr);
+  simgrid::simix::kernelImmediate([this, key, value] { this->pimpl_->setProperty(key, value); });
 }
 
 std::map<std::string, sg_size_t>* Storage::getContent()
index 010e6f0..3d29ba4 100644 (file)
@@ -31,7 +31,7 @@ XBT_PUBLIC(double) surf_parse_get_size(const char *string, const char *entity_ki
 XBT_PUBLIC(double) surf_parse_get_bandwidth(const char *string, const char *entity_kind, const char *name);
 XBT_PUBLIC(double) surf_parse_get_speed(const char *string, const char *entity_kind, const char *name);
 
-XBT_PUBLIC_DATA(int_f_void_t) surf_parse;       /* Entry-point to the parser. Set this to your function. */
+XBT_PUBLIC(int) surf_parse(); /* Entry-point to the parser */
 
 SG_END_DECL()
 
index e304c1f..b82863a 100644 (file)
@@ -1138,11 +1138,10 @@ void surf_parse_close()
   }
 }
 
-/* Call the lexer to parse the currently opened file. This pointer to function enables bypassing of the parser */
-static int _surf_parse() {
+/* Call the lexer to parse the currently opened file */
+int surf_parse()
+{
   return surf_parse_lex();
 }
 
-int_f_void_t surf_parse = &_surf_parse;
-
 SG_END_DECL()
index 0a87cdc..8203287 100644 (file)
@@ -1,5 +1,6 @@
 # C examples
-foreach(x cloud-sharing get_sender host_on_off host_on_off_recv host_on_off_processes trace_integration)
+foreach(x actions-comm actions-storage cloud-sharing get_sender host_on_off host_on_off_recv host_on_off_processes 
+          trace_integration)
   add_executable       (${x}  ${x}/${x}.c)
   target_link_libraries(${x}  simgrid)
   set_target_properties(${x}  PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${x})
@@ -20,7 +21,14 @@ endforeach()
 
 set(teshsuite_src ${teshsuite_src}  PARENT_SCOPE)
 set(tesh_files    ${tesh_files}     PARENT_SCOPE)
-set(xml_files     ${xml_files}     ${CMAKE_CURRENT_SOURCE_DIR}/trace_integration/test-hbp1.0-hbp1.0-hbp1.0.xml
+set(txt_files     ${txt_files}     ${CMAKE_CURRENT_SOURCE_DIR}/actions-comm/actions-comm.txt
+                                   ${CMAKE_CURRENT_SOURCE_DIR}/actions-comm/actions-comm_split_p0.txt
+                                   ${CMAKE_CURRENT_SOURCE_DIR}/actions-comm/actions-comm_split_p1.txt
+                                   ${CMAKE_CURRENT_SOURCE_DIR}/actions-storage/actions-storage.txt         PARENT_SCOPE)
+set(xml_files     ${xml_files}     ${CMAKE_CURRENT_SOURCE_DIR}/actions-comm/actions-comm_d.xml
+                                   ${CMAKE_CURRENT_SOURCE_DIR}/actions-comm/actions-comm_split_d.xml
+                                   ${CMAKE_CURRENT_SOURCE_DIR}/actions-storage/actions-storage_d.xml
+                                   ${CMAKE_CURRENT_SOURCE_DIR}/trace_integration/test-hbp1.0-hbp1.0-hbp1.0.xml
                                    ${CMAKE_CURRENT_SOURCE_DIR}/trace_integration/test-hbp1.0-hbp3.0-hbp4.0.xml
                                    ${CMAKE_CURRENT_SOURCE_DIR}/trace_integration/test-hbp1.5-hbp1.5.xml
                                    ${CMAKE_CURRENT_SOURCE_DIR}/trace_integration/test-hbp1-c0s0-c0s1.xml
@@ -37,7 +45,9 @@ foreach(x get_sender host_on_off host_on_off_processes host_on_off_recv task_des
   ADD_TESH_FACTORIES(tesh-msg-${x} "thread;boost;ucontext;raw" --setenv srcdir=${CMAKE_HOME_DIRECTORY}/teshsuite/msg/${x} --cd ${CMAKE_BINARY_DIR}/teshsuite/msg/${x} ${CMAKE_HOME_DIRECTORY}/teshsuite/msg/${x}/${x}.tesh)
 endforeach()
 
-
+foreach(x actions-comm actions-storage)
+  ADD_TESH_FACTORIES(tesh-msg-${x} "thread;ucontext;raw;boost" --setenv bindir=${CMAKE_BINARY_DIR}/teshsuite/msg/${x} --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --cd ${CMAKE_HOME_DIRECTORY}/teshsuite/msg/${x} ${x}.tesh)
+endforeach()
 # One context factory is enough for these ones
 
 foreach(x cloud-sharing)
similarity index 59%
rename from examples/msg/actions-comm/actions-comm.c
rename to teshsuite/msg/actions-comm/actions-comm.c
index 2c487db..b431b35 100644 (file)
@@ -9,24 +9,24 @@
 XBT_LOG_NEW_DEFAULT_CATEGORY(actions, "Messages specific for this msg example");
 int communicator_size = 0;
 
-static void action_Isend(const char *const *action);
+static void action_Isend(const char* const* action);
 
 typedef struct {
   int last_Irecv_sender_id;
   int bcast_counter;
-  xbt_dynar_t isends;           /* of msg_comm_t */
+  xbt_dynar_t isends; /* of msg_comm_t */
   /* Used to implement irecv+wait */
-  xbt_dynar_t irecvs;           /* of msg_comm_t */
-  xbt_dynar_t tasks;            /* of msg_task_t */
+  xbt_dynar_t irecvs; /* of msg_comm_t */
+  xbt_dynar_t tasks;  /* of msg_task_t */
 } s_process_globals_t;
 
-typedef s_process_globals_t *process_globals_t;
+typedef s_process_globals_tprocess_globals_t;
 
 /* Helper function */
-static double parse_double(const char *string)
+static double parse_double(const charstring)
 {
   double value;
-  char *endptr;
+  charendptr;
 
   value = strtod(string, &endptr);
   if (*endptr != '\0')
@@ -34,17 +34,18 @@ static double parse_double(const char *string)
   return value;
 }
 
-#define ACT_DEBUG(...) \
-  if (XBT_LOG_ISENABLED(actions, xbt_log_priority_verbose)) {  \
-    char *NAME = xbt_str_join_array(action, " ");              \
-    XBT_DEBUG(__VA_ARGS__);                                    \
-    xbt_free(NAME);                                            \
-  } else ((void)0)
+#define ACT_DEBUG(...)                                                                                                 \
+  if (XBT_LOG_ISENABLED(actions, xbt_log_priority_verbose)) {                                                          \
+    char* NAME = xbt_str_join_array(action, " ");                                                                      \
+    XBT_DEBUG(__VA_ARGS__);                                                                                            \
+    xbt_free(NAME);                                                                                                    \
+  } else                                                                                                               \
+  ((void)0)
 
-static void log_action(const char *const *action, double date)
+static void log_action(const char* const* action, double date)
 {
   if (XBT_LOG_ISENABLED(actions, xbt_log_priority_verbose)) {
-    char *name = xbt_str_join_array(action, " ");
+    charname = xbt_str_join_array(action, " ");
     XBT_VERB("%s %f", name, date);
     xbt_free(name);
   }
@@ -52,11 +53,11 @@ static void log_action(const char *const *action, double date)
 
 static void asynchronous_cleanup(void)
 {
-  process_globals_t globals = (process_globals_t) MSG_process_get_data(MSG_process_self());
+  process_globals_t globals = (process_globals_t)MSG_process_get_data(MSG_process_self());
 
   /* Destroy any isend which correspond to completed communications */
   msg_comm_t comm;
-  while (1/*true*/) {
+  while (1 /*true*/) {
     int pos_found = MSG_comm_testany(globals->isends);
     if (pos_found == -1) /* none remaining */
       break;
@@ -66,14 +67,14 @@ static void asynchronous_cleanup(void)
 }
 
 /* My actions */
-static void action_send(const char *const *action)
+static void action_send(const char* const* action)
 {
   char to[250];
-  const char *size_str = action[3];
-  double size = parse_double(size_str);
-  double clock = MSG_get_clock();
+  const charsize_str = action[3];
+  double size          = parse_double(size_str);
+  double clock         = MSG_get_clock();
 
-  snprintf(to,249, "%s_%s", MSG_process_get_name(MSG_process_self()), action[2]);
+  snprintf(to, 249, "%s_%s", MSG_process_get_name(MSG_process_self()), action[2]);
 
   ACT_DEBUG("Entering Send: %s (size: %g)", NAME, size);
   if (size < 65536) {
@@ -86,14 +87,14 @@ static void action_send(const char *const *action)
   asynchronous_cleanup();
 }
 
-static void action_Isend(const char *const *action)
+static void action_Isend(const char* const* action)
 {
   char to[250];
-  const char *size = action[3];
-  double clock = MSG_get_clock();
-  process_globals_t globals = (process_globals_t) MSG_process_get_data(MSG_process_self());
+  const char* size          = action[3];
+  double clock              = MSG_get_clock();
+  process_globals_t globals = (process_globals_t)MSG_process_get_data(MSG_process_self());
 
-  snprintf(to,249, "%s_%s", MSG_process_get_name(MSG_process_self()), action[2]);
+  snprintf(to, 249, "%s_%s", MSG_process_get_name(MSG_process_self()), action[2]);
   msg_comm_t comm = MSG_task_isend(MSG_task_create(to, 0, parse_double(size), NULL), to);
   xbt_dynar_push(globals->isends, &comm);
 
@@ -102,13 +103,13 @@ static void action_Isend(const char *const *action)
   asynchronous_cleanup();
 }
 
-static void action_recv(const char *const *action)
+static void action_recv(const char* const* action)
 {
   char mailbox_name[250];
   msg_task_t task = NULL;
-  double clock = MSG_get_clock();
+  double clock    = MSG_get_clock();
 
-  snprintf(mailbox_name,249, "%s_%s", action[2], MSG_process_get_name(MSG_process_self()));
+  snprintf(mailbox_name, 249, "%s_%s", action[2], MSG_process_get_name(MSG_process_self()));
 
   ACT_DEBUG("Receiving: %s", NAME);
   msg_error_t res = MSG_task_receive(&task, mailbox_name);
@@ -120,15 +121,15 @@ static void action_recv(const char *const *action)
   asynchronous_cleanup();
 }
 
-static void action_Irecv(const char *const *action)
+static void action_Irecv(const char* const* action)
 {
   char mailbox[250];
-  double clock = MSG_get_clock();
-  process_globals_t globals = (process_globals_t) MSG_process_get_data(MSG_process_self());
+  double clock              = MSG_get_clock();
+  process_globals_t globals = (process_globals_t)MSG_process_get_data(MSG_process_self());
 
   XBT_DEBUG("Irecv on %s", MSG_process_get_name(MSG_process_self()));
 
-  snprintf(mailbox,249, "%s_%s", action[2], MSG_process_get_name(MSG_process_self()));
+  snprintf(mailbox, 249, "%s_%s", action[2], MSG_process_get_name(MSG_process_self()));
   msg_task_t t = NULL;
   xbt_dynar_push(globals->tasks, &t);
   msg_comm_t c = MSG_task_irecv(xbt_dynar_get_ptr(globals->tasks, xbt_dynar_length(globals->tasks) - 1), mailbox);
@@ -138,12 +139,12 @@ static void action_Irecv(const char *const *action)
   asynchronous_cleanup();
 }
 
-static void action_wait(const char *const *action)
+static void action_wait(const char* const* action)
 {
   msg_task_t task = NULL;
   msg_comm_t comm;
-  double clock = MSG_get_clock();
-  process_globals_t globals = (process_globals_t) MSG_process_get_data(MSG_process_self());
+  double clock              = MSG_get_clock();
+  process_globals_t globals = (process_globals_t)MSG_process_get_data(MSG_process_self());
 
   xbt_assert(xbt_dynar_length(globals->irecvs), "action wait not preceded by any irecv: %s",
              xbt_str_join_array(action, " "));
@@ -159,7 +160,7 @@ static void action_wait(const char *const *action)
 }
 
 /* FIXME: that's a poor man's implementation: we should take the message exchanges into account */
-static void action_barrier(const char *const *action)
+static void action_barrier(const char* const* action)
 {
   static msg_bar_t barrier           = NULL;
   static int processes_arrived_sofar = 0;
@@ -178,35 +179,35 @@ static void action_barrier(const char *const *action)
   ACT_DEBUG("Exiting barrier: %s", NAME);
 
   processes_arrived_sofar--;
-  if (processes_arrived_sofar<=0) {
+  if (processes_arrived_sofar <= 0) {
     MSG_barrier_destroy(barrier);
     barrier = NULL;
   }
 }
 
-static void action_bcast(const char *const *action)
+static void action_bcast(const char* const* action)
 {
   char mailbox[80];
   double comm_size = parse_double(action[2]);
-  msg_task_t task = NULL;
-  double clock = MSG_get_clock();
+  msg_task_t task  = NULL;
+  double clock     = MSG_get_clock();
 
-  process_globals_t counters = (process_globals_t) MSG_process_get_data(MSG_process_self());
+  process_globals_t counters = (process_globals_t)MSG_process_get_data(MSG_process_self());
 
   xbt_assert(communicator_size, "Size of Communicator is not defined, can't use collective operations");
 
-  const char * process_name = MSG_process_get_name(MSG_process_self());
+  const char* process_name = MSG_process_get_name(MSG_process_self());
 
-  char *bcast_identifier = bprintf("bcast_%d", counters->bcast_counter);
+  charbcast_identifier = bprintf("bcast_%d", counters->bcast_counter);
   counters->bcast_counter++;
 
   if (!strcmp(process_name, "p0")) {
     XBT_DEBUG("%s: %s is the Root", bcast_identifier, process_name);
 
-    msg_comm_t *comms = xbt_new0(msg_comm_t, communicator_size - 1);
+    msg_comm_tcomms = xbt_new0(msg_comm_t, communicator_size - 1);
 
     for (int i = 1; i < communicator_size; i++) {
-      snprintf(mailbox,79, "%s_p0_p%d", bcast_identifier, i);
+      snprintf(mailbox, 79, "%s_p0_p%d", bcast_identifier, i);
       comms[i - 1] = MSG_task_isend(MSG_task_create(mailbox, 0, comm_size, NULL), mailbox);
     }
     MSG_comm_waitall(comms, communicator_size - 1, -1);
@@ -216,7 +217,7 @@ static void action_bcast(const char *const *action)
 
     XBT_DEBUG("%s: all messages sent by %s have been received", bcast_identifier, process_name);
   } else {
-    snprintf(mailbox,79, "%s_p0_%s", bcast_identifier, process_name);
+    snprintf(mailbox, 79, "%s_p0_%s", bcast_identifier, process_name);
     MSG_task_receive(&task, mailbox);
     MSG_task_destroy(task);
     XBT_DEBUG("%s: %s has received", bcast_identifier, process_name);
@@ -226,20 +227,20 @@ static void action_bcast(const char *const *action)
   xbt_free(bcast_identifier);
 }
 
-static void action_comm_size(const char *const *action)
+static void action_comm_size(const char* const* action)
 {
-  const char *size = action[2];
-  double clock = MSG_get_clock();
+  const charsize = action[2];
+  double clock     = MSG_get_clock();
 
   communicator_size = parse_double(size);
   log_action(action, MSG_get_clock() - clock);
 }
 
-static void action_compute(const char *const *action)
+static void action_compute(const char* const* action)
 {
-  const char *amount = action[2];
-  msg_task_t task = MSG_task_create("task", parse_double(amount), 0, NULL);
-  double clock = MSG_get_clock();
+  const charamount = action[2];
+  msg_task_t task    = MSG_task_create("task", parse_double(amount), 0, NULL);
+  double clock       = MSG_get_clock();
 
   ACT_DEBUG("Entering %s", NAME);
   MSG_task_execute(task);
@@ -247,19 +248,19 @@ static void action_compute(const char *const *action)
   log_action(action, MSG_get_clock() - clock);
 }
 
-static void action_init(const char *const *action)
+static void action_init(const char* const* action)
 {
   XBT_DEBUG("Initialize the counters");
-  process_globals_t globals = (process_globals_t) calloc(1, sizeof(s_process_globals_t));
-  globals->isends = xbt_dynar_new(sizeof(msg_comm_t), NULL);
-  globals->irecvs = xbt_dynar_new(sizeof(msg_comm_t), NULL);
-  globals->tasks = xbt_dynar_new(sizeof(msg_task_t), NULL);
+  process_globals_t globals = (process_globals_t)calloc(1, sizeof(s_process_globals_t));
+  globals->isends           = xbt_dynar_new(sizeof(msg_comm_t), NULL);
+  globals->irecvs           = xbt_dynar_new(sizeof(msg_comm_t), NULL);
+  globals->tasks            = xbt_dynar_new(sizeof(msg_task_t), NULL);
   MSG_process_set_data(MSG_process_self(), globals);
 }
 
-static void action_finalize(const char *const *action)
+static void action_finalize(const char* const* action)
 {
-  process_globals_t globals = (process_globals_t) MSG_process_get_data(MSG_process_self());
+  process_globals_t globals = (process_globals_t)MSG_process_get_data(MSG_process_self());
   if (globals) {
     asynchronous_cleanup();
     xbt_dynar_free_container(&(globals->isends));
@@ -269,20 +270,19 @@ static void action_finalize(const char *const *action)
   }
 }
 
-int main(int argc, char *argv[])
+int main(int argc, charargv[])
 {
   /* Check the given arguments */
   MSG_init(&argc, argv);
   /* Explicit initialization of the action module is required now*/
   MSG_action_init();
 
-  xbt_assert(argc > 2,
-       "Usage: %s platform_file deployment_file [action_files]\n"
-       "\t# if all actions are in the same file\n"
-       "\tExample: %s msg_platform.xml msg_deployment.xml actions\n"
-       "\t# if actions are in separate files, specified in deployment\n"
-       "\tExample: %s msg_platform.xml msg_deployment.xml ",
-       argv[0],argv[0],argv[0]);
+  xbt_assert(argc > 2, "Usage: %s platform_file deployment_file [action_files]\n"
+                       "\t# if all actions are in the same file\n"
+                       "\tExample: %s msg_platform.xml msg_deployment.xml actions\n"
+                       "\t# if actions are in separate files, specified in deployment\n"
+                       "\tExample: %s msg_platform.xml msg_deployment.xml ",
+             argv[0], argv[0], argv[0]);
 
   MSG_create_environment(argv[1]);
   MSG_launch_application(argv[2]);
@@ -10,34 +10,37 @@ XBT_LOG_NEW_DEFAULT_CATEGORY(storage_actions, "Messages specific for this exampl
 
 static xbt_dict_t opened_files = NULL;
 
-#define ACT_DEBUG(...) \
-  if (XBT_LOG_ISENABLED(storage_actions, xbt_log_priority_verbose)) {  \
-    char *NAME = xbt_str_join_array(action, " ");              \
-    XBT_DEBUG(__VA_ARGS__);                                    \
-    xbt_free(NAME);                                            \
-  } else ((void)0)
-
-static void log_action(const char *const *action, double date)
+#define ACT_DEBUG(...)                                                                                                 \
+  if (XBT_LOG_ISENABLED(storage_actions, xbt_log_priority_verbose)) {                                                  \
+    char* NAME = xbt_str_join_array(action, " ");                                                                      \
+    XBT_DEBUG(__VA_ARGS__);                                                                                            \
+    xbt_free(NAME);                                                                                                    \
+  } else                                                                                                               \
+  ((void)0)
+
+static void log_action(const char* const* action, double date)
 {
   if (XBT_LOG_ISENABLED(storage_actions, xbt_log_priority_verbose)) {
-    char *name = xbt_str_join_array(action, " ");
+    charname = xbt_str_join_array(action, " ");
     XBT_VERB("%s %f", name, date);
     xbt_free(name);
   }
 }
 
-static msg_file_t get_file_descriptor(const char *file_name){
+static msg_file_t get_file_descriptor(const char* file_name)
+{
   char full_name[1024];
 
-  snprintf(full_name,1023, "%s:%s", MSG_process_get_name(MSG_process_self()), file_name);
+  snprintf(full_name, 1023, "%s:%s", MSG_process_get_name(MSG_process_self()), file_name);
 
   msg_file_t file = (msg_file_t)xbt_dict_get_or_null(opened_files, full_name);
   return file;
 }
 
-static sg_size_t parse_size(const char *string){
+static sg_size_t parse_size(const char* string)
+{
   sg_size_t size;
-  char *endptr;
+  charendptr;
 
   size = strtoul(string, &endptr, 10);
   if (*endptr != '\0')
@@ -45,13 +48,14 @@ static sg_size_t parse_size(const char *string){
   return size;
 }
 
-static void action_open(const char *const *action) {
-  const char *file_name = action[2];
+static void action_open(const char* const* action)
+{
+  const char* file_name = action[2];
   char full_name[1024];
   msg_file_t file = NULL;
-  double clock = MSG_get_clock();
+  double clock    = MSG_get_clock();
 
-  snprintf(full_name,1023, "%s:%s", MSG_process_get_name(MSG_process_self()), file_name);
+  snprintf(full_name, 1023, "%s:%s", MSG_process_get_name(MSG_process_self()), file_name);
 
   ACT_DEBUG("Entering Open: %s (filename: %s)", NAME, file_name);
   file = MSG_file_open(file_name, NULL);
@@ -61,10 +65,11 @@ static void action_open(const char *const *action) {
   log_action(action, MSG_get_clock() - clock);
 }
 
-static void action_read(const char *const *action) {
-  const char *file_name = action[2];
-  const char *size_str = action[3];
-  sg_size_t size = parse_size(size_str);
+static void action_read(const char* const* action)
+{
+  const char* file_name = action[2];
+  const char* size_str  = action[3];
+  sg_size_t size        = parse_size(size_str);
 
   double clock = MSG_get_clock();
 
@@ -76,8 +81,9 @@ static void action_read(const char *const *action) {
   log_action(action, MSG_get_clock() - clock);
 }
 
-static void action_close(const char *const *action) {
-  const char *file_name = action[2];
+static void action_close(const char* const* action)
+{
+  const char* file_name = action[2];
   msg_file_t file;
   double clock = MSG_get_clock();
 
@@ -89,12 +95,14 @@ static void action_close(const char *const *action) {
   log_action(action, MSG_get_clock() - clock);
 }
 
-int main(int argc, char *argv[]) {
+int main(int argc, char* argv[])
+{
   MSG_init(&argc, argv);
   /* Explicit initialization of the action module is required */
   MSG_action_init();
 
-  xbt_assert(argc > 3,"Usage: %s platform_file deployment_file [action_files]\n"
+  xbt_assert(argc > 3,
+             "Usage: %s platform_file deployment_file [action_files]\n"
              "\texample: %s platform.xml deployment.xml actions # if all actions are in the same file\n"
              "\texample: %s platform.xml deployment.xml # if actions are in separate files, specified in deployment\n",
              argv[0], argv[0], argv[0]);
@@ -120,5 +128,5 @@ int main(int argc, char *argv[]) {
   /* Explicit finalization of the action module is required now*/
   MSG_action_exit();
 
-  return res!=MSG_OK;
+  return res != MSG_OK;
 }