Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
convert platform-properties
[simgrid.git] / examples / README.rst
index d02d508..57925db 100644 (file)
@@ -82,19 +82,29 @@ Starting and Stoping Actors
           - the end of any actor: :cpp:member:`simgrid::s4u::Actor::on_termination()`
           - the destruction of any actor: :cpp:member:`simgrid::s4u::Actor::on_destruction()`
 
+       .. example-tab:: examples/c/actor-exiting/actor-exiting.c
+
+          This example shows how to attach a callback to the end of a specific actor with 
+          :cpp:func:`sg_actor_on_exit()`.
+
   - **Kill actors:**
     Actors can forcefully stop other actors.
-    
+
     .. tabs::
-    
+
        .. example-tab:: examples/s4u/actor-kill/s4u-actor-kill.cpp
-       
+
           See also :cpp:func:`void simgrid::s4u::Actor::kill(void)`, :cpp:func:`void simgrid::s4u::Actor::kill_all()`,
-          :cpp:func:`simgrid::s4u::this_actor::exit`.
+          :cpp:func:`simgrid::s4u::this_actor::exit`, :cpp:func:`simgrid::s4u::this_actor::on_exit`.
 
        .. example-tab:: examples/python/actor-kill/actor-kill.py
 
-          See also :py:func:`simgrid.Actor.kill`, :py:func:`simgrid.Actor.kill_all`, :py:func:`simgrid.this_actor.exit`.
+          See also :py:func:`simgrid.Actor.kill`, :py:func:`simgrid.Actor.kill_all`, :py:func:`simgrid.this_actor.exit`,
+          :py:func:`simgrid.this_actor.on_exit`.
+
+       .. example-tab:: examples/c/actor-kill/actor-kill.c
+
+          See also :cpp:func:`sg_actor_kill`, :cpp:func:`sg_actor_kill_all`, :cpp:func:`sg_actor_exit`, :cpp:func:`sg_actor_on_exit`.
 
   - **Controling the actor life cycle from the XML:**
     You can specify a start time and a kill time in the deployment file.
@@ -109,6 +119,10 @@ Starting and Stoping Actors
 
           This demonstrates the ``start_time`` and ``kill_time`` attribute of the :ref:`pf_tag_actor` tag.
 
+       .. example-tab:: examples/c/actor-lifetime/actor-lifetime.c
+
+          This file is not really interesting: the important matter is in the XML file.
+
   - **Daemonize actors:**
     Some actors may be intended to simulate daemons that run in background. This example show how to transform a regular
     actor into a daemon that will be automatically killed once the simulation is over.
@@ -123,6 +137,21 @@ Starting and Stoping Actors
 
           See also :py:func:`simgrid.Actor.daemonize()` and :py:func:`simgrid.Actor.is_daemon()`.
 
+       .. example-tab:: examples/c/actor-daemon/actor-daemon.c
+
+          See also :cpp:func:`sg_actor_daemonize` and :cpp:func:`sg_actor_is_daemon`.
+
+  - **Specify the stack size to use**
+    The stack size can be specified by default on the command line,
+    globally by changing the configuration with :cpp:func:`simgrid::s4u::Engine::set_config(std::string)`, 
+    or for a specific actor using :cpp:func:`simgrid::s4u::Actor::set_stacksize` before its start.
+    
+    .. tabs::
+
+       .. example-tab:: examples/s4u/actor-stacksize/s4u-actor-stacksize.cpp
+
+       .. example-tab:: examples/c/actor-stacksize/actor-stacksize.c
+
 Inter-Actors Interactions
 -------------------------
 
@@ -138,27 +167,36 @@ synchronization objects <s4u_ex_IPC>`.
        .. example-tab:: examples/s4u/actor-suspend/s4u-actor-suspend.cpp
 
           See also :cpp:func:`simgrid::s4u::this_actor::suspend()`,
-          :cpp:func:`simgrid::s4u::Actor::suspend()`, :cpp:func:`simgrid::s4u::Actor::resume()` and
+          :cpp:func:`simgrid::s4u::Actor::suspend()`, :cpp:func:`simgrid::s4u::Actor::resume()`, and
           :cpp:func:`simgrid::s4u::Actor::is_suspended()`.
 
        .. example-tab:: examples/python/actor-suspend/actor-suspend.py
 
           See also :py:func:`simgrid.this_actor.suspend()`,
-          :py:func:`simgrid.Actor.suspend()`, :py:func:`simgrid.Actor.resume()` and
+          :py:func:`simgrid.Actor.suspend()`, :py:func:`simgrid.Actor.resume()`, and
           :py:func:`simgrid.Actor.is_suspended()`.
 
+       .. example-tab:: examples/c/actor-suspend/actor-suspend.c
+
+          See also :cpp:func:`sg_actor_suspend()`, :cpp:func:`sg_actor_resume()`, and 
+          :cpp:func:`sg_actor_is_suspended()`.
+
   - **Migrating Actors:**
-    Actors can move or be moved from a host to another very easily.
+    Actors can move or be moved from a host to another very easily. It amount to setting them on a new host.
 
     .. tabs::
 
        .. example-tab:: examples/s4u/actor-migrate/s4u-actor-migrate.cpp
 
-          See also :cpp:func:`simgrid::s4u::this_actor::migrate()` and :cpp:func:`simgrid::s4u::Actor::migrate()`.
+          See also :cpp:func:`simgrid::s4u::this_actor::set_host()` and :cpp:func:`simgrid::s4u::Actor::set_host()`.
 
        .. example-tab:: examples/python/actor-migrate/actor-migrate.py
 
-          See also :py:func:`simgrid.this_actor.migrate()` and :py:func:`simgrid.Actor.migrate()`.
+          See also :py:func:`simgrid.this_actor.set_host()` and :py:func:`simgrid.Actor.set_host()`.
+
+       .. example-tab:: examples/c/actor-migrate/actor-migrate.c
+
+          See also :cpp:func:`sg_actor_set_host()`.
 
   - **Waiting for the termination of an actor:** (joining on it)
     You can block the current actor until the end of another actor.
@@ -173,6 +211,10 @@ synchronization objects <s4u_ex_IPC>`.
 
           See also :py:func:`simgrid.Actor.join()`.
 
+       .. example-tab:: examples/c/actor-join/actor-join.c
+
+          See also :cpp:func:`sg_actor_join`.
+
   - **Yielding to other actors**.
     The ```yield()``` function interrupts the execution of the current
     actor, leaving a chance to the other actors that are ready to run
@@ -188,6 +230,10 @@ synchronization objects <s4u_ex_IPC>`.
 
           See also :py:func:`simgrid.this_actor.yield_()`.
 
+       .. example-tab:: examples/c/actor-yield/actor-yield.c
+
+          See also :cpp:func:`sg_actor_yield()`.
+
 Traces Replay as a Workload
 ---------------------------
 
@@ -247,6 +293,10 @@ Communications on the Network
 
          See also :py:func:`simgrid.Mailbox.put_async()` and :py:func:`simgrid.Comm.wait()`.
 
+      .. example-tab:: examples/c/async-wait/async-wait.c
+
+         See also :cpp:func:`sg_mailbox_put_async()` and :cpp:func:`sg_comm__wait()`.
+
  - **Waiting for all communications in a set:**
    The ``wait_all()`` function is useful when you want to block until
    all activities in a given set have completed. 
@@ -261,6 +311,10 @@ Communications on the Network
 
          See also :py:func:`simgrid.Comm.wait_all()`.
 
+      .. example-tab:: examples/c/async-waitall/async-waitall.c
+
+         See also :cpp:func:`sg_comm_wait_all()`.
+
  - **Waiting for the first completed communication in a set:**
    The ``wait_any()`` function is useful
    when you want to block until one activity of the set completes, no
@@ -303,6 +357,11 @@ Executions on the CPU
 
           See also :py:func:`simgrid.this_actor.execute()`.
 
+       .. example-tab:: examples/c/exec-basic/exec-basic.c
+
+          See also :cpp:func:`void sg_actor_execute(double)`
+          and :cpp:func:`void sg_actor_execute_with_priority(double, double)`.
+
   - **Asynchronous execution:**
     You can start asynchronous executions, just like you would fire
     background threads.
@@ -328,7 +387,17 @@ Executions on the CPU
           :py:func:`simgrid.Exec.get_remaining_ratio()`,
           :py:func:`simgrid.this_actor.exec_async()` and
           :py:func:`simgrid.Activity.cancel()`.
-
+       .. example-tab:: examples/c/exec-async/exec-async.c
+
+          See also :cpp:func:`sg_actor_exec_init()`,
+          :cpp:func:`sg_exec_start()`,
+          :cpp:func:`sg_exec_wait()`,
+          :cpp:func:`sg_exec_get_remaining()`,
+          :cpp:func:`sg_exec_get_remaining_ratio()`,
+          :cpp:func:`sg_actor_exec_async()` and
+          :cpp:func:`sg_exec_cancel()`,
+          
   - **Remote execution:**
     You can start executions on remote hosts, or even change the host
     on which they occur during their execution.
@@ -343,6 +412,10 @@ Executions on the CPU
 
           See also :py:func:`simgrid.Exec.set_host()`.
 
+       .. example-tab:: examples/c/exec-remote/exec-remote.c
+
+          See also :cpp:func:`sg_exec_set_host()`.
+
   - **Parallel executions:**
     These objects are convenient abstractions of parallel
     computational kernels that span over several machines, such as a
@@ -365,6 +438,10 @@ Executions on the CPU
 
           See also :cpp:func:`simgrid::s4u::Host::get_pstate_speed` and :cpp:func:`simgrid::s4u::Host::set_pstate`.
 
+       .. example-tab:: examples/c/exec-dvfs/exec-dvfs.c
+
+          See also :cpp:func:`sg_host_get_pstate_speed` and :cpp:func:`sg_host_set_pstate`.
+
        .. example-tab:: examples/python/exec-dvfs/exec-dvfs.py
 
           See also :py:func:`Host.get_pstate_speed` and :py:func:`Host.set_pstate`.
@@ -388,6 +465,8 @@ write actions on the disk resources.
 
        .. example-tab:: examples/s4u/io-disk-raw/s4u-io-disk-raw.cpp
 
+       .. example-tab:: examples/c/io-disk-raw/io-disk-raw.c
+
        .. example-tab:: examples/platforms/hosts_with_disks.xml
 
           This shows how to declare disks in XML.
@@ -413,6 +492,8 @@ result in short reads and short write, as in reality.
 
        .. example-tab:: examples/s4u/io-file-remote/s4u-io-file-remote.cpp
 
+       .. example-tab:: examples/c/io-file-remote/io-file-remote.c
+
 .. _s4u_ex_IPC:
 
 Classical synchronization objects
@@ -466,6 +547,13 @@ Interacting with the Platform
          - :cpp:func:`simgrid::s4u::Link::get_property()` and :cpp:func:`simgrid::s4u::Link::set_property()`
          - :cpp:func:`simgrid::s4u::NetZone::get_property()` and :cpp:func:`simgrid::s4u::NetZone::set_property()`
 
+      .. example-tab:: examples/c/platform-properties/platform-properties.c
+
+         - :cpp:func:`sg_actor_get_property()` and :cpp:func:`sg_actor_set_property()`
+         - :cpp:func:`sg_host_get_property()` and :cpp:func:sg_host_set_property()`
+         - :cpp:func:`sg_link_get_property()` and :cpp:func:`sg_link_set_property()`
+         - :cpp:func:`sg_link_get_property()` and :cpp:func:`sg_link_set_property()`
+
       .. group-tab:: XML
 
          **Deployment file:**
@@ -552,6 +640,8 @@ Energy Simulation
 
        .. example-tab:: examples/s4u/energy-exec/s4u-energy-exec.cpp
 
+       .. example-tab:: examples/c/energy-exec/energy-exec.c
+
   - **Consumption due to the network:**
     This example shows how to retrieve and display the energy consumed
     by the network during communications.
@@ -606,6 +696,8 @@ than the previous examples.
 
        .. example-tab:: examples/s4u/app-pingpong/s4u-app-pingpong.cpp
 
+       .. example-tab:: examples/c/app-pingpong/app-pingpong.c
+
   - **Token ring:**
     Shows how to implement a classical communication pattern, where a
     token is exchanged along a ring to reach every participant.
@@ -614,6 +706,8 @@ than the previous examples.
 
        .. example-tab:: examples/s4u/app-token-ring/s4u-app-token-ring.cpp
 
+       .. example-tab:: examples/c/app-token-ring/app-token-ring.c
+
   - **Master Workers:**
     Another good old example, where one Master process has a bunch of task to dispatch to a set of several Worker 
     processes.
@@ -660,6 +754,17 @@ Data diffusion
 
        .. example-tab:: examples/s4u/app-chainsend/s4u-app-chainsend.cpp
 
+       .. group-tab:: C
+
+          .. showfile:: examples/c/app-chainsend/chainsend.c
+             :language: c
+
+          .. showfile:: examples/c/app-chainsend/broadcaster.c
+             :language: c
+
+          .. showfile:: examples/c/app-chainsend/peer.c
+             :language: c
+
 Distributed Hash Tables (DHT)
 -----------------------------
 
@@ -708,6 +813,8 @@ Simulating Clouds
 
        .. example-tab:: examples/s4u/cloud-simple/s4u-cloud-simple.cpp
 
+       .. example-tab:: examples/c/cloud-simple/cloud-simple.c
+
   - **Migrating VMs**
     This example shows how to migrate VMs between PMs.
 
@@ -715,6 +822,8 @@ Simulating Clouds
 
        .. example-tab:: examples/s4u/cloud-migration/s4u-cloud-migration.cpp
 
+       .. example-tab:: examples/c/cloud-migration/cloud-migration.c
+
 =======================
 Model-Checking Examples
 =======================