Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'klement/simgrid-klement' into master
[simgrid.git] / docs / source / app_s4u.rst
index b63a3fb..9e9be4e 100644 (file)
@@ -169,10 +169,6 @@ use  :cpp:func:`s4u::Activity::wait_for() <simgrid::s4u::Activity::wait_for>`.
 Finally, to wait at most until a specified time limit, use
 :cpp:func:`s4u::Activity::wait_until() <simgrid::s4u::Activity::wait_until>`.
 
-.. todo::
-
-   wait_for and wait_until are currently not implemented for Exec and Io activities.
-
 Every kind of activity can be asynchronous:
 
   - :ref:`s4u::CommPtr <API_s4u_Comm>` are created with 
@@ -251,8 +247,8 @@ at a given point of time).
 
 A big difference with TCP sockets or MPI communications is that
 communications do not start right away after a
-:cpp:func:`Mailbox::put() <simgrid::s4u::Mailbox::put()>`, but wait
-for the corresponding :cpp:func:`Mailbox::get() <simgrid::s4u::Mailbox::get()>`.
+:cpp:func:`Mailbox::put() <simgrid::s4u::Mailbox::put>`, but wait
+for the corresponding :cpp:func:`Mailbox::get() <simgrid::s4u::Mailbox::get>`.
 You can change this by :ref:`declaring a receiving actor <s4u_receiving_actor>`.
 
 A big difference with twitter hashtags is that SimGrid does not
@@ -264,8 +260,8 @@ A big difference with the ZeroMQ queues is that you cannot filter
 on the data you want to get from the mailbox. To model such settings
 in SimGrid, you'd have one mailbox per potential topic, and subscribe
 to each topic individually with a 
-:cpp:func:`get_async() <simgrid::s4u::Mailbox::get_async()>` on each mailbox.
-Then, use :cpp:func:`Comm::wait_any() <simgrid::s4u::Comm::wait_any()>` 
+:cpp:func:`get_async() <simgrid::s4u::Mailbox::get_async>` on each mailbox.
+Then, use :cpp:func:`Comm::wait_any() <simgrid::s4u::Comm::wait_any>` 
 to get the first message on any of the mailbox you are subscribed onto.
 
 The mailboxes are not located on the network, and you can access
@@ -449,7 +445,7 @@ Creating actors
    .. group-tab:: C
 
       .. autodoxymethod:: sg_actor_init(const char *name, sg_host_t host)
-      .. autodoxymethod:: sg_actor_start(sg_actor_t actor, xbt_main_func_t code, int argc, char **argv)
+      .. autodoxymethod:: sg_actor_start(sg_actor_t actor, xbt_main_func_t code, int argc, const char *const *argv)
 
       .. autodoxymethod:: sg_actor_attach(const char *name, void *data, sg_host_t host, xbt_dict_t properties)
       .. autodoxymethod:: sg_actor_detach()
@@ -492,7 +488,7 @@ Querying info
       .. autodoxymethod:: simgrid::s4u::Actor::get_host
       .. autodoxymethod:: simgrid::s4u::Actor::set_host
 
-      .. autodoxymethod:: simgrid::s4u::Actor::get_refcount()
+      .. autodoxymethod:: simgrid::s4u::Actor::get_refcount
       .. autodoxymethod:: simgrid::s4u::Actor::get_impl
 
    .. group-tab:: Python
@@ -525,7 +521,7 @@ Suspending and resuming actors
 
       .. autodoxymethod:: simgrid::s4u::Actor::suspend()
       .. autodoxymethod:: simgrid::s4u::Actor::resume()
-      .. autodoxymethod:: simgrid::s4u::Actor::is_suspended()
+      .. autodoxymethod:: simgrid::s4u::Actor::is_suspended
 
    .. group-tab:: Python
 
@@ -537,7 +533,7 @@ Suspending and resuming actors
 
       .. autodoxymethod:: sg_actor_suspend(sg_actor_t actor)
       .. autodoxymethod:: sg_actor_resume(sg_actor_t actor)
-      .. autodoxymethod:: sg_actor_is_suspended(sg_actor_t actor)
+      .. autodoxymethod:: sg_actor_is_suspended(const_sg_actor_t actor)
 
 Specifying when actors should terminate
 ---------------------------------------
@@ -549,7 +545,7 @@ Specifying when actors should terminate
       .. autodoxymethod:: simgrid::s4u::Actor::kill()
       .. autodoxymethod:: simgrid::s4u::Actor::kill_all()
       .. autodoxymethod:: simgrid::s4u::Actor::set_kill_time(double time)
-      .. autodoxymethod:: simgrid::s4u::Actor::get_kill_time()
+      .. autodoxymethod:: simgrid::s4u::Actor::get_kill_time
 
       .. autodoxymethod:: simgrid::s4u::Actor::restart()
       .. autodoxymethod:: simgrid::s4u::Actor::daemonize()
@@ -571,6 +567,7 @@ Specifying when actors should terminate
 
       .. autodoxymethod:: sg_actor_restart(sg_actor_t actor)
       .. autodoxymethod:: sg_actor_daemonize(sg_actor_t actor)
+      .. autodoxymethod:: sg_actor_is_daemon
 
 .. _API_s4u_Actor_end:
 
@@ -604,6 +601,10 @@ Signals
 
       .. autodoxyvar:: simgrid::s4u::Actor::on_creation
       .. autodoxyvar:: simgrid::s4u::Actor::on_suspend
+      .. cpp:var:: xbt::signal<void(const simgrid::s4u::Actor&, const simgrid::s4u::Host & previous_location)> Actor::on_host_change
+
+         Signal fired when an actor is migrated from one host to another.
+
       .. autodoxyvar:: simgrid::s4u::Actor::on_resume
       .. autodoxyvar:: simgrid::s4u::Actor::on_sleep
       .. autodoxyvar:: simgrid::s4u::Actor::on_wake_up
@@ -634,7 +635,7 @@ Querying info
       .. autodoxymethod:: simgrid::s4u::this_actor::is_maestro()
 
       .. autodoxymethod:: simgrid::s4u::this_actor::get_host()
-      .. autodoxymethod:: simgrid::s4u::this_actor::set_host(Host *new_host)
+      .. autodoxymethod:: simgrid::s4u::this_actor::set_host(simgrid::s4u::Host *new_host)
 
    .. group-tab:: Python
 
@@ -708,13 +709,13 @@ the execution, or start an asynchronous activity.
 
    .. group-tab:: C++
 
-      .. autodoxymethod:: simgrid::s4u::this_actor::exec_async(double flops_amounts)
+      .. autodoxymethod:: simgrid::s4u::this_actor::exec_async
       .. autodoxymethod:: simgrid::s4u::this_actor::exec_init(const std::vector< s4u::Host * > &hosts, const std::vector< double > &flops_amounts, const std::vector< double > &bytes_amounts)
       .. autodoxymethod:: simgrid::s4u::this_actor::exec_init(double flops_amounts)
       .. autodoxymethod:: simgrid::s4u::this_actor::execute(double flop)
       .. autodoxymethod:: simgrid::s4u::this_actor::execute(double flop, double priority)
-      .. autodoxymethod:: simgrid::s4u::this_actor::parallel_execute(const std::vector< s4u::Host * > &hosts, const std::vector< double > &flops_amounts, const std::vector< double > &bytes_amounts)
-      .. autodoxymethod:: simgrid::s4u::this_actor::parallel_execute(const std::vector< s4u::Host * > &hosts, const std::vector< double > &flops_amounts, const std::vector< double > &bytes_amounts, double timeout)
+      .. autodoxymethod:: simgrid::s4u::this_actor::parallel_execute(const std::vector< s4u::Host *> &hosts, const std::vector< double > &flops_amounts, const std::vector< double > &bytes_amounts)
+      .. autodoxymethod:: simgrid::s4u::this_actor::parallel_execute(const std::vector< s4u::Host *> &hosts, const std::vector< double > &flops_amounts, const std::vector< double > &bytes_amounts, double timeout)
 
    .. group-tab:: Python
 
@@ -759,14 +760,18 @@ Initialization
       .. autodoxymethod:: simgrid::s4u::Engine::is_initialized()
       .. autodoxymethod:: simgrid::s4u::Engine::shutdown()
       .. autodoxymethod:: simgrid::s4u::Engine::set_config(const std::string &str)
+      .. autodoxymethod:: simgrid::s4u::Engine::set_config(const std::string &name, bool value)
+      .. autodoxymethod:: simgrid::s4u::Engine::set_config(const std::string &name, double value)
+      .. autodoxymethod:: simgrid::s4u::Engine::set_config(const std::string &name, int value)
+      .. autodoxymethod:: simgrid::s4u::Engine::set_config(const std::string &name, const std::string &value)
 
-      .. autodoxymethod:: simgrid::s4u::Engine::load_deployment(const std::string &deploy)
-      .. autodoxymethod:: simgrid::s4u::Engine::load_platform(const std::string &platf)
+      .. autodoxymethod:: simgrid::s4u::Engine::load_deployment
+      .. autodoxymethod:: simgrid::s4u::Engine::load_platform
       .. autodoxymethod:: simgrid::s4u::Engine::register_actor(const std::string &name)
       .. autodoxymethod:: simgrid::s4u::Engine::register_actor(const std::string &name, F code)
-      .. autodoxymethod:: simgrid::s4u::Engine::register_default(int(*code)(int, char **))
-      .. autodoxymethod:: simgrid::s4u::Engine::register_function(const std::string &name, int(*code)(int, char **))
+      .. autodoxymethod:: simgrid::s4u::Engine::register_default(void(*code)(int, char **))
       .. autodoxymethod:: simgrid::s4u::Engine::register_function(const std::string &name, void(*code)(std::vector< std::string >))
+      .. autodoxymethod:: simgrid::s4u::Engine::register_function(const std::string &name, void(*code)(int, char **))
 
    .. group-tab:: Python
    
@@ -791,7 +796,7 @@ Run the simulation
    .. group-tab:: C++
 
       .. autodoxymethod:: simgrid::s4u::Engine::get_clock()
-      .. autodoxymethod:: simgrid::s4u::Engine::run()
+      .. autodoxymethod:: simgrid::s4u::Engine::run
 
    .. group-tab:: Python
    
@@ -810,9 +815,9 @@ Retrieving actors
 
    .. group-tab:: C++
 
-      .. autodoxymethod:: simgrid::s4u::Engine::get_actor_count()
-      .. autodoxymethod:: simgrid::s4u::Engine::get_all_actors()
-      .. autodoxymethod:: simgrid::s4u::Engine::get_filtered_actors(const std::function< bool(ActorPtr)> &filter)
+      .. autodoxymethod:: simgrid::s4u::Engine::get_actor_count
+      .. autodoxymethod:: simgrid::s4u::Engine::get_all_actors
+      .. autodoxymethod:: simgrid::s4u::Engine::get_filtered_actors
 
    .. group-tab:: C
 
@@ -825,11 +830,11 @@ Retrieving hosts
 
    .. group-tab:: C++
 
-      .. autodoxymethod:: simgrid::s4u::Engine::get_all_hosts()
-      .. autodoxymethod:: simgrid::s4u::Engine::get_host_count()
-      .. autodoxymethod:: simgrid::s4u::Engine::get_filtered_hosts(const std::function< bool(Host *)> &filter)
-      .. autodoxymethod:: simgrid::s4u::Engine::host_by_name(const std::string &name)
-      .. autodoxymethod:: simgrid::s4u::Engine::host_by_name_or_null(const std::string &name)
+      .. autodoxymethod:: simgrid::s4u::Engine::get_all_hosts
+      .. autodoxymethod:: simgrid::s4u::Engine::get_host_count
+      .. autodoxymethod:: simgrid::s4u::Engine::get_filtered_hosts
+      .. autodoxymethod:: simgrid::s4u::Engine::host_by_name
+      .. autodoxymethod:: simgrid::s4u::Engine::host_by_name_or_null
 
    .. group-tab:: Python
 
@@ -846,11 +851,11 @@ Retrieving links
 
    .. group-tab:: C++
 
-      .. autodoxymethod:: simgrid::s4u::Engine::get_all_links()
-      .. autodoxymethod:: simgrid::s4u::Engine::get_link_count()
+      .. autodoxymethod:: simgrid::s4u::Engine::get_all_links
+      .. autodoxymethod:: simgrid::s4u::Engine::get_link_count
       .. autodoxymethod:: simgrid::s4u::Engine::get_filtered_links
-      .. autodoxymethod:: simgrid::s4u::Engine::link_by_name(const std::string &name)
-      .. autodoxymethod:: simgrid::s4u::Engine::link_by_name_or_null(const std::string &name)
+      .. autodoxymethod:: simgrid::s4u::Engine::link_by_name
+      .. autodoxymethod:: simgrid::s4u::Engine::link_by_name_or_null
 
 Interacting with the routing
 ----------------------------
@@ -859,12 +864,12 @@ Interacting with the routing
 
    .. group-tab:: C++
 
-      .. autodoxymethod:: simgrid::s4u::Engine::get_all_netpoints()
-      .. autodoxymethod:: simgrid::s4u::Engine::get_filtered_netzones()
+      .. autodoxymethod:: simgrid::s4u::Engine::get_all_netpoints
+      .. autodoxymethod:: simgrid::s4u::Engine::get_filtered_netzones
       .. autodoxymethod:: simgrid::s4u::Engine::get_instance()
-      .. autodoxymethod:: simgrid::s4u::Engine::get_netzone_root()
-      .. autodoxymethod:: simgrid::s4u::Engine::netpoint_by_name_or_null(const std::string &name)
-      .. autodoxymethod:: simgrid::s4u::Engine::netzone_by_name_or_null(const std::string &name)
+      .. autodoxymethod:: simgrid::s4u::Engine::get_netzone_root
+      .. autodoxymethod:: simgrid::s4u::Engine::netpoint_by_name_or_null
+      .. autodoxymethod:: simgrid::s4u::Engine::netzone_by_name_or_null
       .. autodoxymethod:: simgrid::s4u::Engine::set_netzone_root(const NetZone *netzone)
 
 Signals
@@ -919,8 +924,8 @@ Querying info
 
    .. group-tab:: C++
 
-      .. autodoxymethod:: simgrid::s4u::Mailbox::get_cname()
-      .. autodoxymethod:: simgrid::s4u::Mailbox::get_name()
+      .. autodoxymethod:: simgrid::s4u::Mailbox::get_cname
+      .. autodoxymethod:: simgrid::s4u::Mailbox::get_name
 
    .. group-tab:: Python
 
@@ -952,15 +957,15 @@ Receiving data
 
    .. group-tab:: C++
 
-      .. autodoxymethod:: simgrid::s4u::Mailbox::empty()
-      .. autodoxymethod:: simgrid::s4u::Mailbox::front()
+      .. autodoxymethod:: simgrid::s4u::Mailbox::empty
+      .. autodoxymethod:: simgrid::s4u::Mailbox::front
       .. autodoxymethod:: simgrid::s4u::Mailbox::get()
       .. autodoxymethod:: simgrid::s4u::Mailbox::get(double timeout)
       .. autodoxymethod:: simgrid::s4u::Mailbox::get_async(void **data)
       .. autodoxymethod:: simgrid::s4u::Mailbox::get_init()
       .. autodoxymethod:: simgrid::s4u::Mailbox::iprobe(int type, bool(*match_fun)(void *, void *, kernel::activity::CommImpl *), void *data)
-      .. autodoxymethod:: simgrid::s4u::Mailbox::listen()
-      .. autodoxymethod:: simgrid::s4u::Mailbox::ready()
+      .. autodoxymethod:: simgrid::s4u::Mailbox::listen
+      .. autodoxymethod:: simgrid::s4u::Mailbox::ready
 
    .. group-tab:: Python
 
@@ -979,12 +984,12 @@ See :ref:`s4u_receiving_actor`.
 
    .. group-tab:: C++
 
-      .. autodoxymethod:: simgrid::s4u::Mailbox::get_receiver()
+      .. autodoxymethod:: simgrid::s4u::Mailbox::get_receiver
       .. autodoxymethod:: simgrid::s4u::Mailbox::set_receiver(ActorPtr actor)
 
    .. group-tab:: C
 
-      .. autodoxymethod:: ::sg_mailbox_set_receiver(const char *alias)
+      .. autodoxymethod:: sg_mailbox_set_receiver(const char *alias)
                   
 .. _API_s4u_Resource:
 
@@ -1023,13 +1028,13 @@ Querying info
 
    .. group-tab:: C++
 
-      .. autodoxymethod:: simgrid::s4u::Disk::get_cname()
-      .. autodoxymethod:: simgrid::s4u::Disk::get_host()
-      .. autodoxymethod:: simgrid::s4u::Disk::get_name()
-      .. autodoxymethod:: simgrid::s4u::Disk::get_properties()
-      .. autodoxymethod:: simgrid::s4u::Disk::get_property(const std::string &key)
-      .. autodoxymethod:: simgrid::s4u::Disk::get_read_bandwidth()
-      .. autodoxymethod:: simgrid::s4u::Disk::get_write_bandwidth()
+      .. autodoxymethod:: simgrid::s4u::Disk::get_cname() const
+      .. autodoxymethod:: simgrid::s4u::Disk::get_host() const
+      .. autodoxymethod:: simgrid::s4u::Disk::get_name() const
+      .. autodoxymethod:: simgrid::s4u::Disk::get_properties() const
+      .. autodoxymethod:: simgrid::s4u::Disk::get_property(const std::string &key) const
+      .. autodoxymethod:: simgrid::s4u::Disk::get_read_bandwidth() const
+      .. autodoxymethod:: simgrid::s4u::Disk::get_write_bandwidth() const
       .. autodoxymethod:: simgrid::s4u::Disk::set_property(const std::string &, const std::string &value)
 
 I/O operations
@@ -1133,12 +1138,12 @@ Querying info
 
    .. group-tab:: C++
 
-      .. autodoxymethod:: simgrid::s4u::Host::get_cname()
-      .. autodoxymethod:: simgrid::s4u::Host::get_core_count()
-      .. autodoxymethod:: simgrid::s4u::Host::get_name()
-      .. autodoxymethod:: simgrid::s4u::Host::get_available_speed()
-      .. autodoxymethod:: simgrid::s4u::Host::get_load()
-      .. autodoxymethod:: simgrid::s4u::Host::get_speed()
+      .. autodoxymethod:: simgrid::s4u::Host::get_cname() const
+      .. autodoxymethod:: simgrid::s4u::Host::get_core_count() const
+      .. autodoxymethod:: simgrid::s4u::Host::get_name() const
+      .. autodoxymethod:: simgrid::s4u::Host::get_available_speed() const
+      .. autodoxymethod:: simgrid::s4u::Host::get_load() const
+      .. autodoxymethod:: simgrid::s4u::Host::get_speed() const
 
    .. group-tab:: Python
 
@@ -1162,8 +1167,8 @@ User data and properties
 
    .. group-tab:: C++
 
-      .. autodoxymethod:: simgrid::s4u::Host::get_properties()
-      .. autodoxymethod:: simgrid::s4u::Host::get_property(const std::string &key)
+      .. autodoxymethod:: simgrid::s4u::Host::get_properties() const
+      .. autodoxymethod:: simgrid::s4u::Host::get_property(const std::string &key) const
       .. autodoxymethod:: simgrid::s4u::Host::set_properties(const std::map< std::string, std::string > &properties)
       .. autodoxymethod:: simgrid::s4u::Host::set_property(const std::string &key, const std::string &value)
 
@@ -1175,17 +1180,17 @@ User data and properties
       .. autodoxymethod:: sg_host_extension_create(void(*deleter)(void *))
       .. autodoxymethod:: sg_host_extension_get(const_sg_host_t host, size_t rank)
 
-Retrieve components
--------------------
+Retrieving components
+---------------------
 
 .. tabs::
 
    .. group-tab:: C++
 
       .. autodoxymethod:: simgrid::s4u::Host::add_disk(Disk *disk)
-      .. autodoxymethod:: simgrid::s4u::Host::get_actor_count()
-      .. autodoxymethod:: simgrid::s4u::Host::get_all_actors()
-      .. autodoxymethod:: simgrid::s4u::Host::get_disks()
+      .. autodoxymethod:: simgrid::s4u::Host::get_actor_count() const
+      .. autodoxymethod:: simgrid::s4u::Host::get_all_actors() const
+      .. autodoxymethod:: simgrid::s4u::Host::get_disks() const
       .. autodoxymethod:: simgrid::s4u::Host::remove_disk(const std::string &disk_name)
 
    .. group-tab:: C
@@ -1199,7 +1204,7 @@ On/Off
 
    .. group-tab:: C++
 
-      .. autodoxymethod:: simgrid::s4u::Host::is_on()
+      .. autodoxymethod:: simgrid::s4u::Host::is_on() const
       .. autodoxymethod:: simgrid::s4u::Host::turn_off()
       .. autodoxymethod:: simgrid::s4u::Host::turn_on()
 
@@ -1216,9 +1221,9 @@ DVFS
 
    .. group-tab:: C++
 
-      .. autodoxymethod:: simgrid::s4u::Host::get_pstate()
-      .. autodoxymethod:: simgrid::s4u::Host::get_pstate_count()
-      .. autodoxymethod:: simgrid::s4u::Host::get_pstate_speed(int pstate_index)
+      .. autodoxymethod:: simgrid::s4u::Host::get_pstate() const
+      .. autodoxymethod:: simgrid::s4u::Host::get_pstate_count() const
+      .. autodoxymethod:: simgrid::s4u::Host::get_pstate_speed(int pstate_index) const
       .. autodoxymethod:: simgrid::s4u::Host::set_pstate(int pstate_index)
       .. autodoxymethod:: simgrid::s4u::Host::set_speed_profile(kernel::profile::Profile *p)
       .. autodoxymethod:: simgrid::s4u::Host::set_state_profile(kernel::profile::Profile *p)
@@ -1243,9 +1248,9 @@ Execution
 
    .. group-tab:: C++
 
-      .. autodoxymethod:: simgrid::s4u::Host::exec_async(double flops_amounts)
-      .. autodoxymethod:: simgrid::s4u::Host::execute(double flops)
-      .. autodoxymethod:: simgrid::s4u::Host::execute(double flops, double priority)
+      .. autodoxymethod:: simgrid::s4u::Host::exec_async
+      .. autodoxymethod:: simgrid::s4u::Host::execute(double flops) const
+      .. autodoxymethod:: simgrid::s4u::Host::execute(double flops, double priority) const
 
 Platform and routing
 --------------------
@@ -1255,17 +1260,18 @@ Platform and routing
    .. group-tab:: C++
 
       .. autodoxymethod:: simgrid::s4u::Host::get_englobing_zone()
-      .. autodoxymethod:: simgrid::s4u::Host::get_netpoint()
-      .. autodoxymethod:: simgrid::s4u::Host::route_to(const Host *dest, std::vector< Link * > &links, double *latency)
-      .. autodoxymethod:: simgrid::s4u::Host::route_to(const Host *dest, std::vector< kernel::resource::LinkImpl * > &links, double *latency)
-      .. autodoxymethod:: simgrid::s4u::Host::send_to(Host *dest, double byte_amount)
+      .. autodoxymethod:: simgrid::s4u::Host::get_netpoint() const
+      .. autodoxymethod:: simgrid::s4u::Host::route_to(const Host *dest, std::vector< Link * > &links, double *latency) const
+      .. autodoxymethod:: simgrid::s4u::Host::route_to(const Host *dest, std::vector< kernel::resource::LinkImpl * > &links, double *latency) const
+      .. autodoxymethod:: simgrid::s4u::Host::sendto(Host *dest, double byte_amount)
+      .. autodoxymethod:: simgrid::s4u::Host::sendto_async(Host *dest, double byte_amount)
 
    .. group-tab:: C
 
       .. autodoxymethod:: sg_host_route(const_sg_host_t from, const_sg_host_t to, xbt_dynar_t links)
       .. autodoxymethod:: sg_host_route_bandwidth(const_sg_host_t from, const_sg_host_t to)
       .. autodoxymethod:: sg_host_route_latency(const_sg_host_t from, const_sg_host_t to)
-      .. autodoxymethod:: sg_host_send_to(sg_host_t from, sg_host_t to, double byte_amount)
+      .. autodoxymethod:: sg_host_sendto(sg_host_t from, sg_host_t to, double byte_amount)
 
 Signals
 -------
@@ -1344,13 +1350,13 @@ Querying info
 
    .. group-tab:: C++
 
-      .. autodoxymethod:: simgrid::s4u::Link::get_bandwidth()
-      .. autodoxymethod:: simgrid::s4u::Link::get_cname()
-      .. autodoxymethod:: simgrid::s4u::Link::get_latency()
-      .. autodoxymethod:: simgrid::s4u::Link::get_name()
-      .. autodoxymethod:: simgrid::s4u::Link::get_sharing_policy()
-      .. autodoxymethod:: simgrid::s4u::Link::get_usage()
-      .. autodoxymethod:: simgrid::s4u::Link::is_used()
+      .. autodoxymethod:: simgrid::s4u::Link::get_bandwidth() const
+      .. autodoxymethod:: simgrid::s4u::Link::get_cname() const
+      .. autodoxymethod:: simgrid::s4u::Link::get_latency() const
+      .. autodoxymethod:: simgrid::s4u::Link::get_name() const
+      .. autodoxymethod:: simgrid::s4u::Link::get_sharing_policy() const
+      .. autodoxymethod:: simgrid::s4u::Link::get_usage() const
+      .. autodoxymethod:: simgrid::s4u::Link::is_used() const
 
    .. group-tab:: C
 
@@ -1359,6 +1365,16 @@ Querying info
       .. autodoxymethod:: sg_link_latency(const_sg_link_t link)
       .. autodoxymethod:: sg_link_name(const_sg_link_t link)
 
+Modifying characteristics
+-------------------------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxymethod:: simgrid::s4u::Link::set_bandwidth(double value)
+      .. autodoxymethod:: simgrid::s4u::Link::set_latency(double value)
+
 User data and properties
 ------------------------
 
@@ -1366,7 +1382,7 @@ User data and properties
 
    .. group-tab:: C++
 
-      .. autodoxymethod:: simgrid::s4u::Link::get_property(const std::string &key)
+      .. autodoxymethod:: simgrid::s4u::Link::get_property(const std::string &key) const
       .. autodoxymethod:: simgrid::s4u::Link::set_property(const std::string &key, const std::string &value)
 
    .. group-tab:: C
@@ -1383,13 +1399,15 @@ On/Off
 
       See also :cpp:func:`simgrid::s4u::Link::set_state_profile`.
 
-      .. autodoxymethod:: simgrid::s4u::Link::is_on()
+      .. autodoxymethod:: simgrid::s4u::Link::is_on() const
       .. autodoxymethod:: simgrid::s4u::Link::turn_off()
       .. autodoxymethod:: simgrid::s4u::Link::turn_on()
 
 Dynamic profiles
 ----------------
 
+See :ref:`howto_churn` for more details.
+
 .. tabs::
 
    .. group-tab:: C++
@@ -1398,6 +1416,15 @@ Dynamic profiles
       .. autodoxymethod:: simgrid::s4u::Link::set_latency_profile(kernel::profile::Profile *profile)
       .. autodoxymethod:: simgrid::s4u::Link::set_state_profile(kernel::profile::Profile *profile)
 
+WIFI links
+----------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxymethod:: simgrid::s4u::Link::set_host_wifi_rate
+
 Signals
 -------
 
@@ -1418,10 +1445,121 @@ Signals
 ⁣  class NetZone
 ================
 
-.. doxygenclass:: simgrid::s4u::NetZone
-   :members:
-   :protected-members:
-   :undoc-members:
+.. autodoxyclass:: simgrid::s4u::NetZone
+
+Basic management
+----------------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. code-block:: C++
+
+         #include <simgrid/s4u/NetZone.hpp>
+
+      Note that there is no NetZonePtr type, and that you cannot use the RAII
+      idiom on network zones because SimGrid does not allow (yet) to create nor
+      destroy resources once the simulation is started. 
+
+   .. group-tab:: C
+
+      .. code:: C
+
+         #include <simgrid/zone.h>
+
+      .. doxygentypedef:: sg_netzone_t
+      .. cpp:type:: const s4u_NetZone* const_sg_netzone_t
+
+         Pointer to a constant network zone object.
+
+Retrieving zones
+----------------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      See :cpp:func:`simgrid::s4u::Engine::get_netzone_root`,
+      :cpp:func:`simgrid::s4u::Engine::netzone_by_name_or_null` and
+      :cpp:func:`simgrid::s4u::Engine::get_filtered_netzones`.
+
+   .. group-tab:: C
+
+      .. autodoxymethod:: sg_zone_get_by_name(const char *name)
+      .. autodoxymethod:: sg_zone_get_root()
+
+Querying info
+--------------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxymethod:: simgrid::s4u::NetZone::get_cname() const
+      .. autodoxymethod:: simgrid::s4u::NetZone::get_name() const
+
+   .. group-tab:: C
+
+      .. autodoxymethod:: sg_zone_get_name(const_sg_netzone_t zone)
+
+User data and properties
+------------------------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxymethod:: simgrid::s4u::NetZone::get_properties() const
+      .. autodoxymethod:: simgrid::s4u::NetZone::get_property(const std::string &key) const
+      .. autodoxymethod:: simgrid::s4u::NetZone::set_property(const std::string &key, const std::string &value)
+
+   .. group-tab:: C
+
+      .. autodoxymethod:: sg_zone_get_property_value(const_sg_netzone_t as, const char *name)
+      .. autodoxymethod:: sg_zone_set_property_value(sg_netzone_t netzone, const char *name, const char *value)
+
+Retrieving components
+---------------------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxymethod:: simgrid::s4u::NetZone::get_all_hosts() const
+      .. autodoxymethod:: simgrid::s4u::NetZone::get_host_count() const
+
+   .. group-tab:: C
+
+      .. autodoxymethod:: sg_zone_get_hosts(const_sg_netzone_t zone, xbt_dynar_t whereto)
+
+Routing data
+------------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxymethod:: simgrid::s4u::NetZone::add_bypass_route
+      .. autodoxymethod:: simgrid::s4u::NetZone::add_component(kernel::routing::NetPoint *elm)
+      .. autodoxymethod:: simgrid::s4u::NetZone::add_route
+      .. autodoxymethod:: simgrid::s4u::NetZone::get_children() const
+      .. autodoxymethod:: simgrid::s4u::NetZone::get_father()
+
+   .. group-tab:: C
+
+      .. autodoxymethod:: sg_zone_get_sons(const_sg_netzone_t zone, xbt_dict_t whereto)
+
+Signals
+-------
+
+.. tabs::
+
+  .. group-tab:: C++
+
+     .. autodoxyvar:: simgrid::s4u::NetZone::on_creation
+     .. autodoxyvar:: simgrid::s4u::NetZone::on_route_creation
+     .. autodoxyvar:: simgrid::s4u::NetZone::on_seal
 
 .. _API_s4u_VirtualMachine:
 
@@ -1429,23 +1567,110 @@ Signals
 ⁣  class VirtualMachine
 =======================
 
-.. doxygenclass:: simgrid::s4u::VirtualMachine
-   :members:
-   :protected-members:
-   :undoc-members:
-
-.. autodoxymethod:: sg_vm_create_core
-.. autodoxymethod:: sg_vm_create_multicore
-.. autodoxymethod:: sg_vm_get_name
-.. autodoxymethod:: sg_vm_get_pm
-.. autodoxymethod:: sg_vm_is_created
-.. autodoxymethod:: sg_vm_is_running
-.. autodoxymethod:: sg_vm_is_suspended
-.. autodoxymethod:: sg_vm_start
-.. autodoxymethod:: sg_vm_suspend
-.. autodoxymethod:: sg_vm_resume
-.. autodoxymethod:: sg_vm_shutdown
-.. autodoxymethod:: sg_vm_destroy
+
+.. autodoxyclass:: simgrid::s4u::VirtualMachine
+
+Basic management
+----------------
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. code-block:: C++
+
+         #include <simgrid/s4u/VirtualMachine.hpp>
+
+      Note that there is no VirtualMachinePtr type, and that you cannot use the RAII
+      idiom on virtual machines. There is no good reason for that and should change in the future.
+
+   .. group-tab:: C
+
+      .. code:: C
+
+         #include <simgrid/vm.h>
+
+      .. doxygentypedef:: sg_vm_t
+      .. cpp:type:: const s4u_VirtualMachine* const_sg_vm_t
+
+         Pointer to a constant virtual machine object.
+
+Creating VMs
+------------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxymethod:: simgrid::s4u::VirtualMachine::VirtualMachine(const std::string &name, Host *physical_host, int core_amount)
+      .. autodoxymethod:: simgrid::s4u::VirtualMachine::VirtualMachine(const std::string &name, Host *physical_host, int core_amount, size_t ramsize)
+      .. autodoxymethod:: simgrid::s4u::VirtualMachine::destroy
+
+   .. group-tab:: C
+
+      .. autodoxymethod:: sg_vm_create_core
+      .. autodoxymethod:: sg_vm_create_multicore
+      .. autodoxymethod:: sg_vm_destroy
+
+Querying info
+--------------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxymethod:: simgrid::s4u::VirtualMachine::get_pm() const
+      .. autodoxymethod:: simgrid::s4u::VirtualMachine::get_ramsize() const
+      .. autodoxymethod:: simgrid::s4u::VirtualMachine::get_state()
+
+      .. autodoxymethod:: simgrid::s4u::VirtualMachine::set_bound(double bound)
+      .. autodoxymethod:: simgrid::s4u::VirtualMachine::set_pm(Host *pm)
+      .. autodoxymethod:: simgrid::s4u::VirtualMachine::set_ramsize(size_t ramsize)
+
+   .. group-tab:: C
+
+      .. autodoxymethod:: sg_vm_get_ramsize(const_sg_vm_t vm)
+      .. autodoxymethod:: sg_vm_set_bound(sg_vm_t vm, double bound)
+      .. autodoxymethod:: sg_vm_set_ramsize(sg_vm_t vm, size_t size)
+
+      .. autodoxymethod:: sg_vm_get_name
+      .. autodoxymethod:: sg_vm_get_pm
+      .. autodoxymethod:: sg_vm_is_created
+      .. autodoxymethod:: sg_vm_is_running
+      .. autodoxymethod:: sg_vm_is_suspended
+
+Life cycle
+----------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxymethod:: simgrid::s4u::VirtualMachine::resume()
+      .. autodoxymethod:: simgrid::s4u::VirtualMachine::shutdown()
+      .. autodoxymethod:: simgrid::s4u::VirtualMachine::start()
+      .. autodoxymethod:: simgrid::s4u::VirtualMachine::suspend()
+
+   .. group-tab:: C
+
+      .. autodoxymethod:: sg_vm_start
+      .. autodoxymethod:: sg_vm_suspend
+      .. autodoxymethod:: sg_vm_resume
+      .. autodoxymethod:: sg_vm_shutdown
+
+Signals
+-------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxyvar:: simgrid::s4u::VirtualMachine::on_migration_end
+      .. autodoxyvar:: simgrid::s4u::VirtualMachine::on_migration_start
+      .. autodoxyvar:: simgrid::s4u::VirtualMachine::on_resume
+      .. autodoxyvar:: simgrid::s4u::VirtualMachine::on_shutdown
+      .. autodoxyvar:: simgrid::s4u::VirtualMachine::on_start
+      .. autodoxyvar:: simgrid::s4u::VirtualMachine::on_started
+      .. autodoxyvar:: simgrid::s4u::VirtualMachine::on_suspend
 
 .. _API_s4u_Activity:
 
@@ -1461,23 +1686,59 @@ class Activity
    :ref:`I/O <API_s4u_Io>` (started on and consumming disks).
    See also the :ref:`section on activities <s4u_Activities>` above.
 
-Querying info about activities
-------------------------------
+Basic management
+----------------
 
-   .. autodoxymethod:: simgrid::s4u::Activity::get_remaining()
-   .. autodoxymethod:: simgrid::s4u::Activity::get_state()
-   .. autodoxymethod:: simgrid::s4u::Activity::set_remaining(double remains)
-   .. autodoxymethod:: simgrid::s4u::Activity::get_impl
+.. tabs::
 
-Activities lifecycle
---------------------
+   .. group-tab:: C++
+
+      .. code-block:: C++
+
+         #include <simgrid/s4u/Activity.hpp>
+
+      .. doxygentypedef:: ActivityPtr
+
+Querying info
+-------------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxymethod:: simgrid::s4u::Activity::get_cname
+      .. autodoxymethod:: simgrid::s4u::Activity::get_name
+      .. autodoxymethod:: simgrid::s4u::Activity::get_remaining() const
+      .. autodoxymethod:: simgrid::s4u::Activity::get_state() const
+      .. autodoxymethod:: simgrid::s4u::Activity::set_remaining(double remains)
+      .. autodoxymethod:: simgrid::s4u::Activity::set_state(Activity::State state)
+
+
+Activities life cycle
+---------------------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxymethod:: simgrid::s4u::Activity::start
+      .. autodoxymethod:: simgrid::s4u::Activity::cancel
+      .. autodoxymethod:: simgrid::s4u::Activity::test
+      .. autodoxymethod:: simgrid::s4u::Activity::wait
+      .. autodoxymethod:: simgrid::s4u::Activity::wait_for
+      .. autodoxymethod:: simgrid::s4u::Activity::wait_until(double time_limit)
+      .. autodoxymethod:: simgrid::s4u::Activity::vetoable_start()
 
-   .. autodoxymethod:: simgrid::s4u::Activity::start
-   .. autodoxymethod:: simgrid::s4u::Activity::cancel
-   .. autodoxymethod:: simgrid::s4u::Activity::test
-   .. autodoxymethod:: simgrid::s4u::Activity::wait
-   .. autodoxymethod:: simgrid::s4u::Activity::wait_for
-   .. autodoxymethod:: simgrid::s4u::Activity::wait_until(double time_limit)
+Suspending and resuming an activity
+-----------------------------------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxymethod:: simgrid::s4u::Activity::suspend
+      .. autodoxymethod:: simgrid::s4u::Activity::resume
+      .. autodoxymethod:: simgrid::s4u::Activity::is_suspended
 
 .. _API_s4u_Comm:
 
@@ -1485,12 +1746,81 @@ Activities lifecycle
 ⁣  class Comm
 =============
 
-.. doxygentypedef:: CommPtr
+.. autodoxyclass:: simgrid::s4u::Comm
+
+Basic management
+----------------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. code-block:: C++
+
+         #include <simgrid/s4u/Comm.hpp>
+
+      .. doxygentypedef:: CommPtr
+
+   .. group-tab:: Python
+
+      .. code:: Python
+
+         from simgrid import Comm
+
+Querying info
+-------------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxymethod:: simgrid::s4u::Comm::get_dst_data_size() const
+      .. autodoxymethod:: simgrid::s4u::Comm::get_mailbox() const
+      .. autodoxymethod:: simgrid::s4u::Comm::get_sender() const
+      .. autodoxymethod:: simgrid::s4u::Comm::set_dst_data(void **buff)
+      .. autodoxymethod:: simgrid::s4u::Comm::set_dst_data(void **buff, size_t size)
+      .. autodoxymethod:: simgrid::s4u::Comm::detach()
+      .. autodoxymethod:: simgrid::s4u::Comm::detach(void(*clean_function)(void *))
+      .. autodoxymethod:: simgrid::s4u::Comm::set_rate(double rate)
+      .. autodoxymethod:: simgrid::s4u::Comm::set_src_data(void *buff)
+      .. autodoxymethod:: simgrid::s4u::Comm::set_src_data(void *buff, size_t size)
+      .. autodoxymethod:: simgrid::s4u::Comm::set_src_data_size(size_t size)
+      .. autodoxymethod:: simgrid::s4u::Comm::set_tracing_category(const std::string &category)
+
+Life cycle
+----------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxymethod:: simgrid::s4u::Comm::cancel
+      .. autodoxymethod:: simgrid::s4u::Comm::start
+      .. autodoxymethod:: simgrid::s4u::Comm::test
+      .. autodoxymethod:: simgrid::s4u::Comm::test_any(const std::vector< CommPtr > *comms)
+      .. autodoxymethod:: simgrid::s4u::Comm::wait
+      .. autodoxymethod:: simgrid::s4u::Comm::wait_all(const std::vector< CommPtr > *comms)
+      .. autodoxymethod:: simgrid::s4u::Comm::wait_any(const std::vector< CommPtr > *comms)
+      .. autodoxymethod:: simgrid::s4u::Comm::wait_any_for(const std::vector< CommPtr > *comms_in, double timeout)
+      .. autodoxymethod:: simgrid::s4u::Comm::wait_for
+
+   .. group-tab:: Python
 
-.. doxygenclass:: simgrid::s4u::Comm
-   :members:
-   :protected-members:
-   :undoc-members:
+       .. automethod:: simgrid.Comm.test
+       .. automethod:: simgrid.Comm.wait
+       .. automethod:: simgrid.Comm.wait_all
+       .. automethod:: simgrid.Comm.wait_any
+
+Signals
+-------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxyvar:: simgrid::s4u::Comm::on_completion
+      .. autodoxyvar:: simgrid::s4u::Comm::on_receiver_start
+      .. autodoxyvar:: simgrid::s4u::Comm::on_sender_start
 
 .. _API_s4u_Exec:
 
@@ -1498,38 +1828,87 @@ Activities lifecycle
 ⁣  class Exec
 =============
 
-.. doxygentypedef:: ExecPtr
+.. autodoxyclass:: simgrid::s4u::Exec
 
-.. doxygenclass:: simgrid::s4u::Exec
-   :members:
-   :protected-members:
-   :undoc-members:
+Basic management
+----------------
 
-.. _API_s4u_ExecSeq:
+.. tabs::
 
-==================
-⁣    class ExecSeq
-==================
+   .. group-tab:: C++
 
-.. doxygentypedef:: ExecSeqPtr
+      .. code-block:: C++
 
-.. doxygenclass:: simgrid::s4u::ExecSeq
-   :members:
-   :protected-members:
-   :undoc-members:
+         #include <simgrid/s4u/Exec.hpp>
 
-.. _API_s4u_ExecPar:
+      .. doxygentypedef:: ExecPtr
 
-==================
-⁣    class ExecPar
-==================
+   .. group-tab:: Python
 
-.. doxygentypedef:: ExecParPtr
+      .. code:: Python
+
+         from simgrid import Exec
+
+Querying info
+-------------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxymethod:: simgrid::s4u::Exec::get_cost() const
+      .. autodoxymethod:: simgrid::s4u::Exec::get_finish_time() const
+      .. autodoxymethod:: simgrid::s4u::Exec::get_host() const
+      .. autodoxymethod:: simgrid::s4u::Exec::get_host_number() const
+      .. cpp:function:: double Exec::get_remaining()
+
+         On sequential executions, returns the amount of flops that remain to be done;
+         This cannot be used on parallel executions.
+      
+      .. autodoxymethod:: simgrid::s4u::Exec::get_remaining_ratio
+      .. autodoxymethod:: simgrid::s4u::Exec::get_start_time() const
+      .. autodoxymethod:: simgrid::s4u::Exec::set_bound(double bound)
+      .. autodoxymethod:: simgrid::s4u::Exec::set_host
+      .. autodoxymethod:: simgrid::s4u::Exec::set_priority(double priority)
+
+   .. group-tab:: Python
+
+       .. autoattribute:: simgrid.Exec.host
+       .. autoattribute:: simgrid.Exec.remaining
+       .. autoattribute:: simgrid.Exec.remaining_ratio
+
+Life cycle
+----------
+
+.. tabs::
+
+   .. group-tab:: C++
 
-.. doxygenclass:: simgrid::s4u::ExecPar
-   :members:
-   :protected-members:
-   :undoc-members:
+      .. autodoxymethod:: simgrid::s4u::Exec::cancel
+      .. autodoxymethod:: simgrid::s4u::Exec::set_timeout(double timeout)
+      .. autodoxymethod:: simgrid::s4u::Exec::start
+      .. autodoxymethod:: simgrid::s4u::Exec::test
+      .. autodoxymethod:: simgrid::s4u::Exec::wait
+      .. autodoxymethod:: simgrid::s4u::Exec::wait_any(std::vector< ExecPtr > *execs)
+      .. autodoxymethod:: simgrid::s4u::Exec::wait_any_for(std::vector< ExecPtr > *execs, double timeout)
+      .. autodoxymethod:: simgrid::s4u::Exec::wait_for
+
+   .. group-tab:: Python
+
+       .. automethod:: simgrid.Exec.cancel
+       .. automethod:: simgrid.Exec.start
+       .. automethod:: simgrid.Exec.test
+       .. automethod:: simgrid.Exec.wait
+
+Signals
+-------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. cpp:var:: xbt::signal<void(Actor const&, Exec const&)> Exec::on_completion
+      .. cpp:var:: xbt::signal<void(Actor const&, Exec const&)> Exec::on_start
 
 .. _API_s4u_Io:
 
@@ -1537,12 +1916,43 @@ Activities lifecycle
 ⁣  class Io
 ===========
 
-.. doxygentypedef:: IoPtr
+.. autodoxyclass:: simgrid::s4u::Io
+
+Basic management
+----------------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. code-block:: C++
+
+         #include <simgrid/s4u/Io.hpp>
+
+      .. doxygentypedef:: IoPtr
+
+Querying info
+-------------
+
+.. tabs::
+
+   .. group-tab:: C++
+
+      .. autodoxymethod:: simgrid::s4u::Io::get_performed_ioops() const
+      .. autodoxymethod:: simgrid::s4u::Io::get_remaining
+
+Life cycle
+----------
+
+.. tabs::
+
+   .. group-tab:: C++
 
-.. doxygenclass:: simgrid::s4u::Io
-   :members:
-   :protected-members:
-   :undoc-members:
+      .. autodoxymethod:: simgrid::s4u::Io::cancel
+      .. autodoxymethod:: simgrid::s4u::Io::start
+      .. autodoxymethod:: simgrid::s4u::Io::test
+      .. autodoxymethod:: simgrid::s4u::Io::wait
+      .. autodoxymethod:: simgrid::s4u::Io::wait_for
 
 .. _API_s4u_Synchronizations:
 
@@ -1674,8 +2084,8 @@ Basic management
             #include <simgrid/cond.h>
 
          .. doxygentypedef:: sg_cond_t
-         .. doxygenfunction:: sg_cond_init
-         .. doxygenfunction:: sg_cond_destroy
+         .. autodoxymethod:: sg_cond_init
+         .. autodoxymethod:: sg_cond_destroy
 
 Waiting and notifying
 ---------------------
@@ -1700,10 +2110,10 @@ Waiting and notifying
 
       .. group-tab:: C
 
-         .. doxygenfunction:: sg_cond_notify_all
-         .. doxygenfunction:: sg_cond_notify_one
-         .. doxygenfunction:: sg_cond_wait
-         .. doxygenfunction:: sg_cond_wait_for
+         .. autodoxymethod:: sg_cond_notify_all
+         .. autodoxymethod:: sg_cond_notify_one
+         .. autodoxymethod:: sg_cond_wait
+         .. autodoxymethod:: sg_cond_wait_for
 
 .. _API_s4u_Semaphore: