Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' into actor-yield
authorZitagcc <toufik.boubehziz@inria.fr>
Thu, 23 Nov 2017 09:23:55 +0000 (10:23 +0100)
committerGitHub <noreply@github.com>
Thu, 23 Nov 2017 09:23:55 +0000 (10:23 +0100)
1  2 
examples/s4u/CMakeLists.txt
examples/s4u/README.doc
include/simgrid/s4u/Actor.hpp
src/s4u/s4u_actor.cpp

@@@ -1,7 -1,8 +1,8 @@@
  foreach (example actions-comm actions-storage 
-                  actor-create actor-daemon actor-kill actor-migration actor-suspend 
+                  actor-create actor-daemon actor-execute actor-kill actor-lifetime actor-migration actor-suspend actor-priority
                   app-masterworker app-pingpong app-token-ring
 -               async-wait async-waitany async-waitall
 +               async-wait async-waitany async-waitall actor-yield
+                energy-link
                 plugin-hostload io mutex)
    add_executable       (s4u-${example}  ${example}/s4u-${example}.cpp)
    target_link_libraries(s4u-${example}  simgrid)
@@@ -32,10 -33,13 +33,14 @@@ endforeach(
  set(examples_src  ${examples_src}                                                                          PARENT_SCOPE)
  set(tesh_files    ${tesh_files}   ${CMAKE_CURRENT_SOURCE_DIR}/app-bittorrent/s4u-app-bittorrent.tesh
                                    ${CMAKE_CURRENT_SOURCE_DIR}/dht-chord/s4u-dht-chord.tesh
 +                                  ${CMAKE_CURRENT_SOURCE_DIR}/actor-yield/s4u-actor-yield.tesh
+                                   ${CMAKE_CURRENT_SOURCE_DIR}/actor-priority/s4u-actor-priority.tesh
+                                   ${CMAKE_CURRENT_SOURCE_DIR}/actor-lifetime/s4u-actor-lifetime.tesh
                                    ${CMAKE_CURRENT_SOURCE_DIR}/async-wait/s4u-async-wait.tesh
                                    ${CMAKE_CURRENT_SOURCE_DIR}/async-waitany/s4u-async-waitany.tesh
-                                   ${CMAKE_CURRENT_SOURCE_DIR}/async-waitall/s4u-async-waitall.tesh         PARENT_SCOPE)
+                                   ${CMAKE_CURRENT_SOURCE_DIR}/async-waitall/s4u-async-waitall.tesh
+                                   ${CMAKE_CURRENT_SOURCE_DIR}/actor-execute/s4u-actor-execute.tesh       
+                   PARENT_SCOPE)
  set(xml_files     ${xml_files}    ${CMAKE_CURRENT_SOURCE_DIR}/actions-comm/s4u-actions-comm-split_d.xml
                                    ${CMAKE_CURRENT_SOURCE_DIR}/actions-comm/s4u-actions-comm_d.xml
                                    ${CMAKE_CURRENT_SOURCE_DIR}/actions-storage/s4u-actions-storage_d.xml
                                    ${CMAKE_CURRENT_SOURCE_DIR}/async-waitany/s4u-async-waitany_d.xml
                                    ${CMAKE_CURRENT_SOURCE_DIR}/async-waitall/s4u-async-waitall_d.xml
                                    ${CMAKE_CURRENT_SOURCE_DIR}/async-wait/s4u-async-wait_d.xml
-                                   ${CMAKE_CURRENT_SOURCE_DIR}/dht-chord/s4u-dht-chord_d.xml                PARENT_SCOPE)
 +                                  ${CMAKE_CURRENT_SOURCE_DIR}/actor-yield/s4u-actor-yield_d.xml
+                                   ${CMAKE_CURRENT_SOURCE_DIR}/dht-chord/s4u-dht-chord_d.xml
+                                   ${CMAKE_CURRENT_SOURCE_DIR}/actor-lifetime/s4u-actor-lifetime_d.xml
+                 PARENT_SCOPE)
  set(txt_files     ${txt_files}    ${CMAKE_CURRENT_SOURCE_DIR}/actions-comm/s4u-actions-comm-split-p0.txt
                                    ${CMAKE_CURRENT_SOURCE_DIR}/actions-comm/s4u-actions-comm-split-p1.txt
                                    ${CMAKE_CURRENT_SOURCE_DIR}/actions-comm/s4u-actions-comm.txt
                                    ${CMAKE_CURRENT_SOURCE_DIR}/README.doc                                   PARENT_SCOPE)
  
  foreach(example actions-comm actions-storage 
-                 actor-create actor-daemon actor-kill actor-migration actor-suspend
+                 actor-create actor-daemon actor-execute actor-kill actor-lifetime actor-migration actor-suspend
                  app-bittorrent app-masterworker app-pingpong app-token-ring 
-               async-wait async-waitall async-waitany actor-yield
-               dht-chord plugin-hostload io mutex)
 -              async-wait async-waitall async-waitany actor-priority
++              async-wait async-waitall async-waitany actor-priority actor-yield
+               dht-chord 
+               energy-link
+               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()
Simple merge
@@@ -215,12 -215,10 +215,12 @@@ public
    /** Suspend an actor by suspending the task on which it was waiting for the completion. */
    void suspend();
  
-   /** Resume a suspended process by resuming the task on which it was waiting for the completion. */
+   /** Resume a suspended actor by resuming the task on which it was waiting for the completion. */
    void resume();
--
++  
 +  void yield();
-   /** Returns true if the process is suspended. */
++  
+   /** Returns true if the actor is suspended. */
    int isSuspended();
  
    /** If set to true, the actor will automatically restart when its host reboots */
@@@ -288,82 -286,81 +288,84 @@@ template <class Rep, class Period> inli
  {
    auto seconds = std::chrono::duration_cast<SimulationClockDuration>(duration);
    this_actor::sleep_for(seconds.count());
-   }
-   template<class Duration>
-   inline void sleep_until(const SimulationTimePoint<Duration>& timeout_time)
-   {
-     auto timeout_native = std::chrono::time_point_cast<SimulationClockDuration>(timeout_time);
-     this_actor::sleep_until(timeout_native.time_since_epoch().count());
-   }
+ }
  
-   XBT_ATTRIB_DEPRECATED_v320("Use sleep_for(): v3.20 will turn this warning into an error.") inline void sleep(
-       double duration)
-   {
-     return sleep_for(duration);
  }
+ template <class Duration> inline void sleep_until(const SimulationTimePoint<Duration>& timeout_time)
+ {
+   auto timeout_native = std::chrono::time_point_cast<SimulationClockDuration>(timeout_time);
+   this_actor::sleep_until(timeout_native.time_since_epoch().count());
+ }
  
-   /** Block the actor, computing the given amount of flops */
-   XBT_PUBLIC(void) execute(double flop);
+ XBT_ATTRIB_DEPRECATED_v320("Use sleep_for(): v3.20 will turn this warning into an error.") inline void sleep(
+     double duration)
+ {
+   return sleep_for(duration);
+ }
  
-   /** Block the actor until it gets a message from the given mailbox.
-    *
-    * See \ref Comm for the full communication API (including non blocking communications).
-    */
-   XBT_PUBLIC(void*)
-   XBT_ATTRIB_DEPRECATED_v320("Use Mailbox::get(): v3.20 will turn this warning into an error.") recv(MailboxPtr chan);
-   XBT_PUBLIC(void*)
-   XBT_ATTRIB_DEPRECATED_v320("Use Mailbox::get(): v3.20 will turn this warning into an error.")
-       recv(MailboxPtr chan, double timeout);
-   XBT_PUBLIC(CommPtr)
-   XBT_ATTRIB_DEPRECATED_v320("Use Mailbox::recv_async(): v3.20 will turn this warning into an error.")
-       irecv(MailboxPtr chan, void** data);
-   /** Block the actor until it delivers a message of the given simulated size to the given mailbox
-    *
-    * See \ref Comm for the full communication API (including non blocking communications).
-   */
-   XBT_PUBLIC(void)
-   XBT_ATTRIB_DEPRECATED_v320("Use Mailbox::put(): v3.20 will turn this warning into an error.")
-       send(MailboxPtr chan, void* payload, double simulatedSize); // 3.17
-   XBT_PUBLIC(void)
-   XBT_ATTRIB_DEPRECATED_v320("Use Mailbox::put(): v3.20 will turn this warning into an error.")
-       send(MailboxPtr chan, void* payload, double simulatedSize, double timeout); // 3.17
+ /** Block the actor, computing the given amount of flops */
+ XBT_PUBLIC(void) execute(double flop);
+ /** Block the actor, computing the given amount of flops at the given priority.
+  *  An execution of priority 2 computes twice as fast as an execution at priority 1. */
+ XBT_PUBLIC(void) execute(double flop, double priority);
+ /** Block the actor until it gets a message from the given mailbox.
+  *
+  * See \ref Comm for the full communication API (including non blocking communications).
+  */
+ XBT_ATTRIB_DEPRECATED_v320("Use Mailbox::get(): v3.20 will turn this warning into an error.") XBT_PUBLIC(void*)
+     recv(MailboxPtr chan);
+ XBT_ATTRIB_DEPRECATED_v320("Use Mailbox::get(): v3.20 will turn this warning into an error.") XBT_PUBLIC(void*)
+     recv(MailboxPtr chan, double timeout);
+ XBT_ATTRIB_DEPRECATED_v320("Use Mailbox::recv_async(): v3.20 will turn this warning into an error.") XBT_PUBLIC(CommPtr)
+     irecv(MailboxPtr chan, void** data);
+ /** Block the actor until it delivers a message of the given simulated size to the given mailbox
+  *
+  * See \ref Comm for the full communication API (including non blocking communications).
+ */
+ XBT_ATTRIB_DEPRECATED_v320("Use Mailbox::put(): v3.20 will turn this warning into an error.") XBT_PUBLIC(void)
+     send(MailboxPtr chan, void* payload, double simulatedSize);
+ XBT_ATTRIB_DEPRECATED_v320("Use Mailbox::put(): v3.20 will turn this warning into an error.") XBT_PUBLIC(void)
+     send(MailboxPtr chan, void* payload, double simulatedSize, double timeout);
  
-   XBT_PUBLIC(CommPtr)
-   XBT_ATTRIB_DEPRECATED_v320("Use Mailbox::put_async(): v3.20 will turn this warning into an error.")
-       isend(MailboxPtr chan, void* payload, double simulatedSize);
+ XBT_ATTRIB_DEPRECATED_v320("Use Mailbox::put_async(): v3.20 will turn this warning into an error.") XBT_PUBLIC(CommPtr)
+     isend(MailboxPtr chan, void* payload, double simulatedSize);
  
  /** @brief Returns the actor ID of the current actor (same as pid). */
  XBT_PUBLIC(aid_t) getPid();
/** @brief Returns the actor ID of the current actor). */
+ XBT_PUBLIC(aid_t) getPid();
  
  /** @brief Returns the ancestor's actor ID of the current actor (same as ppid). */
  XBT_PUBLIC(aid_t) getPpid();
/** @brief Returns the ancestor's actor ID of the current actor. */
+ XBT_PUBLIC(aid_t) getPpid();
  
  /** @brief Returns the name of the current actor. */
  XBT_PUBLIC(std::string) getName();
+ /** @brief Returns the name of the current actor. */
+ XBT_PUBLIC(std::string) getName();
  
  /** @brief Returns the name of the host on which the process is running. */
  XBT_PUBLIC(Host*) getHost();
/** @brief Returns the name of the current actor as a C string. */
XBT_PUBLIC(const char*) getCname();
  
  /** @brief Suspend the actor. */
  XBT_PUBLIC(void) suspend();
/** @brief Returns the name of the host on which the actor is running. */
XBT_PUBLIC(Host*) getHost();
  
  /** @brief Resume the actor. */
  XBT_PUBLIC(void) resume();
/** @brief Suspend the actor. */
XBT_PUBLIC(void) suspend();
  
-   XBT_PUBLIC(void) yield();
++/** @brief yield the actor. */
++XBT_PUBLIC(void) yield();
 +
-   XBT_PUBLIC(bool) isSuspended();
+ /** @brief Resume the actor. */
+ XBT_PUBLIC(void) resume();
  
-   /** @brief kill the actor. */
-   XBT_PUBLIC(void) kill();
+ XBT_PUBLIC(bool) isSuspended();
  
  /** @brief Add a function to the list of "on_exit" functions. */
  XBT_PUBLIC(void) onExit(int_f_pvoid_pvoid_t fun, void* data);
/** @brief kill the actor. */
XBT_PUBLIC(void) kill();
  
-   /** @brief Migrate the actor to a new host. */
-   XBT_PUBLIC(void) migrate(Host* new_host);
- };
+ /** @brief Add a function to the list of "on_exit" functions. */
+ XBT_PUBLIC(void) onExit(int_f_pvoid_pvoid_t fun, void* data);
+ /** @brief Migrate the actor to a new host. */
+ XBT_PUBLIC(void) migrate(Host* new_host);
+ }
  
  /** @} */
  
Simple merge