+ .. doxygenfunction:: simgrid::s4u::Io::on_this_completion_cb
+
+ .. doxygenfunction:: simgrid::s4u::Io::on_suspended_cb
+ .. doxygenfunction:: simgrid::s4u::Io::on_resumed_cb
+ .. doxygenfunction:: simgrid::s4u::Io::on_veto_cb
+ .. doxygenfunction:: simgrid::s4u::Io::on_this_veto_cb
+
+.. _API_s4u_ActivitySet:
+
+====================
+ class ActivitySet
+====================
+
+.. tabs::
+
+ .. group-tab:: C++
+
+ .. doxygenclass:: simgrid::s4u::ActivitySet
+
+ .. group-tab:: Python
+
+ .. autoclass:: simgrid.ActivitySet
+
+ .. group-tab:: C
+
+ .. doxygentypedef:: sg_activity_set_t
+ .. doxygentypedef:: const_sg_activity_set_t
+
+Basic management
+----------------
+
+.. tabs::
+
+ .. group-tab:: C++
+
+ .. code-block:: C++
+
+ #include <simgrid/s4u/ActivitySet.hpp>
+
+ .. doxygentypedef:: ActivitySetPtr
+
+ .. group-tab:: Python
+
+ .. code:: Python
+
+ from simgrid import ActivitySet
+
+ .. group-tab:: C
+
+ .. code-block:: C
+
+ #include <simgrid/activity_set.h>
+
+ .. doxygenfunction:: sg_activity_set_init
+ .. doxygenfunction:: sg_activity_set_delete
+
+Managing activities
+-------------------
+
+.. tabs::
+
+ .. group-tab:: C++
+
+ .. doxygenfunction:: simgrid::s4u::ActivitySet::push
+ .. doxygenfunction:: simgrid::s4u::ActivitySet::erase
+ .. doxygenfunction:: simgrid::s4u::ActivitySet::empty
+ .. doxygenfunction:: simgrid::s4u::ActivitySet::size
+
+ .. group-tab:: Python
+
+ .. automethod:: simgrid.ActivitySet.push()
+ .. automethod:: simgrid.ActivitySet.erase()
+ .. automethod:: simgrid.ActivitySet.empty()
+ .. automethod:: simgrid.ActivitySet.size()
+
+ .. group-tab:: c
+
+ .. doxygenfunction:: sg_activity_set_push
+ .. doxygenfunction:: sg_activity_set_erase
+ .. doxygenfunction:: sg_activity_set_empty
+ .. doxygenfunction:: sg_activity_set_size
+
+Interacting with the set
+------------------------
+
+.. tabs::
+
+ .. group-tab:: C++
+
+ .. doxygenfunction:: simgrid::s4u::ActivitySet::test_any
+ .. doxygenfunction:: simgrid::s4u::ActivitySet::wait_all
+ .. doxygenfunction:: simgrid::s4u::ActivitySet::wait_all_for
+ .. doxygenfunction:: simgrid::s4u::ActivitySet::wait_any
+ .. doxygenfunction:: simgrid::s4u::ActivitySet::wait_any_for
+
+ .. group-tab:: Python
+
+ .. automethod:: simgrid.ActivitySet.test_any()
+ .. automethod:: simgrid.ActivitySet.wait_all()
+ .. automethod:: simgrid.ActivitySet.wait_all_for()
+ .. automethod:: simgrid.ActivitySet.wait_any()
+ .. automethod:: simgrid.ActivitySet.wait_any_for()
+
+ .. group-tab:: c
+
+ .. doxygenfunction:: sg_activity_set_test_any
+ .. doxygenfunction:: sg_activity_set_wait_all
+ .. doxygenfunction:: sg_activity_set_wait_all_for
+ .. doxygenfunction:: sg_activity_set_wait_any
+ .. doxygenfunction:: sg_activity_set_wait_any_for
+ .. doxygenfunction:: sg_activity_unref
+
+Dealing with failed activities
+------------------------------
+
+.. tabs::
+
+ .. group-tab:: C++
+
+ .. doxygenfunction:: simgrid::s4u::ActivitySet::get_failed_activity()
+ .. doxygenfunction:: simgrid::s4u::ActivitySet::has_failed_activities()
+
+.. _API_s4u_Tasks:
+
+==========
+Tasks
+==========
+
+==============
+class Task
+==============
+
+.. doxygenclass:: simgrid::s4u::Task
+
+**Known subclasses:**
+:ref:`Communication Tasks <API_s4u_CommTask>`,
+:ref:`Executions Tasks <API_s4u_ExecTask>`,
+:ref:`I/O Tasks <API_s4u_IoTask>`.
+See also the :ref:`section on activities <s4u_Tasks>` above.
+
+Basic management
+----------------
+
+.. tabs::
+
+ .. group-tab:: C++
+
+ .. code-block:: C++
+
+ #include <simgrid/s4u/Task.hpp>
+
+ .. doxygentypedef:: TaskPtr
+
+Querying info
+-------------
+
+.. tabs::
+
+ .. group-tab:: C++
+
+ .. doxygenfunction:: simgrid::s4u::Task::get_cname() const
+ .. doxygenfunction:: simgrid::s4u::Task::get_name() const
+ .. doxygenfunction:: simgrid::s4u::Task::get_count() const
+ .. doxygenfunction:: simgrid::s4u::Task::get_amount() const
+ .. doxygenfunction:: simgrid::s4u::Task::get_parallelism_degree() const
+ .. doxygenfunction:: simgrid::s4u::Task::set_name(std::string name)
+ .. doxygenfunction:: simgrid::s4u::Task::set_amount(double amount)
+ .. doxygenfunction:: simgrid::s4u::Task::set_parallelism_degree(int n)
+
+Life cycle
+----------
+
+.. tabs::
+
+ .. group-tab:: C++
+ .. doxygenfunction:: simgrid::s4u::Task::enqueue_firings(int n)
+
+Managing Dependencies
+---------------------
+.. tabs::
+
+ .. group-tab:: C++
+ .. doxygenfunction:: simgrid::s4u::Task::add_successor(TaskPtr t)
+ .. doxygenfunction:: simgrid::s4u::Task::remove_successor(TaskPtr t)
+ .. doxygenfunction:: simgrid::s4u::Task::remove_all_successors()
+ .. doxygenfunction:: simgrid::s4u::Task::get_successors() const
+
+Managing Tokens
+---------------
+.. doxygenclass:: simgrid::s4u::Token
+
+.. tabs::
+
+ .. group-tab:: C++
+ .. doxygenfunction:: simgrid::s4u::Task::get_next_token_from(TaskPtr t)
+ .. doxygenfunction:: simgrid::s4u::Task::set_token(std::shared_ptr<Token> token)
+
+Signals
+-------
+
+.. tabs::
+
+ .. group-tab:: C++
+ .. doxygenfunction:: simgrid::s4u::Task::on_start_cb
+ .. doxygenfunction:: simgrid::s4u::Task::on_this_start_cb
+ .. doxygenfunction:: simgrid::s4u::Task::on_completion_cb
+ .. doxygenfunction:: simgrid::s4u::Task::on_this_completion_cb
+
+.. _API_s4u_CommTask:
+
+=================
+ class CommTask
+=================
+.. tabs::
+
+ .. group-tab:: C++
+
+ .. doxygenclass:: simgrid::s4u::CommTask
+
+Basic management
+----------------
+
+.. tabs::
+
+ .. group-tab:: C++
+
+ .. code-block:: C++
+
+ #include <simgrid/s4u/Task.hpp>
+
+ .. doxygentypedef:: CommTaskPtr
+
+Querying info
+-------------
+
+.. tabs::
+
+ .. group-tab:: C++
+
+ .. doxygenfunction:: simgrid::s4u::CommTask::get_source() const
+ .. doxygenfunction:: simgrid::s4u::CommTask::get_destination() const
+ .. doxygenfunction:: simgrid::s4u::CommTask::get_bytes() const
+ .. doxygenfunction:: simgrid::s4u::CommTask::set_source(Host* source);
+ .. doxygenfunction:: simgrid::s4u::CommTask::set_destination(Host* destination);
+ .. doxygenfunction:: simgrid::s4u::CommTask::set_bytes(double bytes)
+
+
+.. _API_s4u_ExecTask:
+
+=================
+ class ExecTask
+=================
+.. tabs::
+
+ .. group-tab:: C++
+
+ .. doxygenclass:: simgrid::s4u::ExecTask
+
+Basic management
+----------------
+
+.. tabs::
+
+ .. group-tab:: C++
+
+ .. code-block:: C++
+
+ #include <simgrid/s4u/Task.hpp>
+
+ .. doxygentypedef:: ExecTaskPtr
+
+Querying info
+-------------
+
+.. tabs::
+
+ .. group-tab:: C++
+
+ .. doxygenfunction:: simgrid::s4u::ExecTask::get_host() const
+ .. doxygenfunction:: simgrid::s4u::ExecTask::get_flops() const
+ .. doxygenfunction:: simgrid::s4u::ExecTask::set_host(Host* host);
+ .. doxygenfunction:: simgrid::s4u::ExecTask::set_flops(double flops);
+
+.. _API_s4u_IoTask:
+
+================
+ class IoTask
+================
+.. tabs::
+
+ .. group-tab:: C++
+
+ .. doxygenclass:: simgrid::s4u::IoTask
+
+Basic management
+----------------
+
+.. tabs::
+
+ .. group-tab:: C++
+
+ .. code-block:: C++
+
+ #include <simgrid/s4u/Task.hpp>
+
+ .. doxygentypedef:: IoTaskPtr
+
+Querying info
+-------------
+
+.. tabs::
+
+ .. group-tab:: C++
+
+ .. doxygenfunction:: simgrid::s4u::IoTask::get_disk() const
+ .. doxygenfunction:: simgrid::s4u::IoTask::get_bytes() const
+ .. doxygenfunction:: simgrid::s4u::IoTask::get_op_type() const
+ .. doxygenfunction:: simgrid::s4u::IoTask::set_disk(Disk* disk);
+ .. doxygenfunction:: simgrid::s4u::IoTask::set_bytes(double bytes);
+ .. doxygenfunction:: simgrid::s4u::IoTask::set_op_type(Io::OpType type);