X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ce930ad96b622e2b3856b7d9c3d97e60ec2c93a1..3907e83884bae6278656e9cd2cb7ef92a8f707fb:/docs/source/Plugins.rst?ds=inline
diff --git a/docs/source/Plugins.rst b/docs/source/Plugins.rst
index 08bec4ea7d..aab0fe0968 100644
--- a/docs/source/Plugins.rst
+++ b/docs/source/Plugins.rst
@@ -5,23 +5,27 @@ SimGrid Plugins
.. raw:: html
-
+
-
-
+
+
You can extend SimGrid without modifying it, thanks to our plugin
mechanism. This page describes how to write your own plugin, and
documents some of the plugins distributed with SimGrid:
+ - :ref:`Host Load `: monitors the load of the compute units.
- :ref:`Host Energy `: models the energy dissipation of the compute units.
- :ref:`Link Energy `: models the energy dissipation of the network.
- - :ref:`Host Load `: monitors the load of the compute units.
+ - :ref:`WiFi Energy `: models the energy dissipation of wifi links.
+ - :ref:`Battery `: models batteries that get discharged by the energy consumption of a given host.
+ - :ref:`Solar Panel `: models solar panels which energy production depends on the solar irradiance.
+ - :ref:`Chiller `: models chillers which dissipate heat by consuming energy.
You can activate these plugins with the :ref:`--cfg=plugin ` command
line option, for example with ``--cfg=plugin:host_energy``. You can get the full
@@ -32,17 +36,17 @@ Defining a Plugin
A plugin can get some additional code executed within the SimGrid
kernel, and attach the data needed by that code to the SimGrid
-objects.
+objects.
-The host load plugin in
+The host load plugin in
`src/plugins/host_load.cpp `_
constitutes a good introductory example. It defines a class
-```HostLoad``` that is meant to be attached to each host. This class
-contains a ```EXTENSION_ID``` field that is mandatory to our extension
-mechanism. Then, the function ```sg_host_load_plugin_init```
+``HostLoad`` that is meant to be attached to each host. This class
+contains a ``EXTENSION_ID`` field that is mandatory to our extension
+mechanism. Then, the function ``sg_host_load_plugin_init``
initializes the plugin. It first calls
:cpp:func:`simgrid::s4u::Host::extension_create()` to register its
-extension to the ```s4u::Host``` objects, and then attaches some
+extension to the ``s4u::Host`` objects, and then attaches some
callbacks to signals.
You can attach your own extension to most kinds of s4u object:
@@ -52,46 +56,120 @@ You can attach your own extension to most kinds of s4u object:
:cpp:class:`Links `. If you need to extend another
kind of objects, please let us now.
-Partial list of existing signals in s4u:
-
-- :cpp:member:`Actor::on_creation `
- :cpp:member:`Actor::on_suspend `
- :cpp:member:`Actor::on_resume `
- :cpp:member:`Actor::on_sleep `
- :cpp:member:`Actor::on_wake_up `
- :cpp:member:`Actor::on_migration_start `
- :cpp:member:`Actor::on_migration_end `
- :cpp:member:`Actor::on_termination `
- :cpp:member:`Actor::on_destruction `
-- :cpp:member:`Comm::on_sender_start `
- :cpp:member:`Comm::on_receiver_start `
- :cpp:member:`Comm::on_completion `
-- :cpp:member:`Engine::on_platform_creation `
- :cpp:member:`Engine::on_platform_created `
- :cpp:member:`Engine::on_time_advance `
- :cpp:member:`Engine::on_simulation_end `
- :cpp:member:`Engine::on_deadlock `
-- :cpp:member:`Exec::on_start `
- :cpp:member:`Exec::on_completion `
-- :cpp:member:`Host::on_creation `
- :cpp:member:`Host::on_destruction `
- :cpp:member:`Host::on_state_change `
- :cpp:member:`Host::on_speed_change `
-- :cpp:member:`Link::on_creation `
- :cpp:member:`Link::on_destruction `
- :cpp:member:`Link::on_state_change `
- :cpp:member:`Link::on_speed_change `
- :cpp:member:`Link::on_communicate `
- :cpp:member:`Link::on_communication_state_change `
-- :cpp:member:`Netzone::on_creation `
- :cpp:member:`Netzone::on_seal `
- :cpp:member:`Netzone::on_route_creation `
-- :cpp:member:`VirtualMachine::on_start `
- :cpp:member:`VirtualMachine::on_started `
- :cpp:member:`VirtualMachine::on_suspend `
- :cpp:member:`VirtualMachine::on_resume `
- :cpp:member:`VirtualMachine::on_migration_start `
- :cpp:member:`VirtualMachine::on_migration_end `
+.. cpp:class:: template simgrid::xbt::signal
+
+ A signal/slot mechanism, where you can attach callbacks to a given signal, and then fire the signal.
+
+ The template parameter is the function signature of the signal (the return value currently ignored).
+
+.. cpp:function::: template unsigned int simgrid::xbt::signal::connect(U slot)
+
+ Add a new callback to this signal.
+
+.. cpp:function:: template simgrid::xbt::signal::operator()(P... args)
+
+ Fire that signal, invoking all callbacks.
+
+.. _s4u_API_signals:
+
+Existing signals
+================
+
+- In actors:
+ :cpp:func:`Actor::on_creation `
+ :cpp:func:`Actor::on_suspend `
+ :cpp:func:`Actor::on_this_suspend `
+ :cpp:func:`Actor::on_resume `
+ :cpp:func:`Actor::on_this_resume `
+ :cpp:func:`Actor::on_sleep `
+ :cpp:func:`Actor::on_this_sleep `
+ :cpp:func:`Actor::on_wake_up `
+ :cpp:func:`Actor::on_this_wake_up `
+ :cpp:func:`Actor::on_host_change `
+ :cpp:func:`Actor::on_this_host_change `
+ :cpp:func:`Actor::on_termination `
+ :cpp:func:`Actor::on_this_termination `
+ :cpp:func:`Actor::on_destruction `
+- In the engine:
+ :cpp:func:`Engine::on_platform_creation `
+ :cpp:func:`Engine::on_platform_created `
+ :cpp:func:`Engine::on_time_advance `
+ :cpp:func:`Engine::on_simulation_end `
+ :cpp:func:`Engine::on_deadlock `
+
+- In resources:
+
+ - :cpp:func:`Disk::on_creation `
+ :cpp:func:`Disk::on_destruction `
+ :cpp:func:`Disk::on_this_destruction `
+ :cpp:func:`Disk::on_onoff `
+ :cpp:func:`Disk::on_this_onoff `
+ - :cpp:func:`Host::on_creation `
+ :cpp:func:`Host::on_destruction `
+ :cpp:func:`Host::on_this_destruction `
+ :cpp:func:`Host::on_onoff `
+ :cpp:func:`Host::on_this_onoff `
+ :cpp:func:`Host::on_speed_change `
+ :cpp:func:`Host::on_this_speed_change `
+ :cpp:func:`Host::on_exec_state_change `
+ - :cpp:func:`Link::on_creation `
+ :cpp:func:`Link::on_destruction `
+ :cpp:func:`Link::on_this_destruction `
+ :cpp:func:`Link::on_onoff `
+ :cpp:func:`Link::on_this_onoff `
+ :cpp:func:`Link::on_bandwidth_change `
+ :cpp:func:`Link::on_this_bandwidth_change `
+ :cpp:func:`Link::on_communication_state_change `
+
+ - :cpp:func:`NetZone::on_creation `
+ :cpp:func:`NetZone::on_seal `
+ - :cpp:func:`VirtualMachine::on_start `
+ :cpp:func:`VirtualMachine::on_this_start `
+ :cpp:func:`VirtualMachine::on_started `
+ :cpp:func:`VirtualMachine::on_this_started `
+ :cpp:func:`VirtualMachine::on_suspend `
+ :cpp:func:`VirtualMachine::on_this_suspend `
+ :cpp:func:`VirtualMachine::on_resume `
+ :cpp:func:`VirtualMachine::on_this_resume `
+ :cpp:func:`VirtualMachine::on_migration_start `
+ :cpp:func:`VirtualMachine::on_this_migration_start `
+ :cpp:func:`VirtualMachine::on_migration_end `
+ :cpp:func:`VirtualMachine::on_this_migration_end `
+
+- In activities:
+
+ - :cpp:func:`Comm::on_send `
+ :cpp:func:`Comm::on_recv `
+ - :cpp:func:`Comm::on_start `
+ :cpp:func:`Comm::on_this_start `
+ :cpp:func:`Comm::on_completion `
+ :cpp:func:`Comm::on_this_completion `
+ :cpp:func:`Comm::on_suspended `
+ :cpp:func:`Comm::on_this_suspended `
+ :cpp:func:`Comm::on_resume `
+ :cpp:func:`Comm::on_this_resumed `
+ :cpp:func:`Comm::on_veto `
+ :cpp:func:`Comm::on_this_veto `
+ - :cpp:func:`Exec::on_start `
+ :cpp:func:`Exec::on_this_start `
+ :cpp:func:`Exec::on_completion `
+ :cpp:func:`Exec::on_this_completion `
+ :cpp:func:`Exec::on_suspended `
+ :cpp:func:`Exec::on_this_suspended `
+ :cpp:func:`Exec::on_resume `
+ :cpp:func:`Exec::on_this_resume `
+ :cpp:func:`Exec::on_veto `
+ :cpp:func:`Exec::on_this_veto `
+ - :cpp:func:`Io::on_start `
+ :cpp:func:`Io::on_this_start `
+ :cpp:func:`Io::on_completion `
+ :cpp:func:`Io::on_this_completion `
+ :cpp:func:`Io::on_suspended `
+ :cpp:func:`Io::on_this_suspended `
+ :cpp:func:`Io::on_resume `
+ :cpp:func:`Io::on_this_resumed `
+ :cpp:func:`Io::on_veto `
+ :cpp:func:`Io::on_this_veto `
Existing Plugins
****************
@@ -101,23 +179,62 @@ to explore the other ones.
.. _plugin_host_energy:
-Host Energy Plugin
-==================
+Host Energy
+===========
+
+.. doxygengroup:: plugin_host_energy
+
-.. doxygengroup:: Plugin_host_energy
.. _plugin_link_energy:
-Link Energy Plugin
-==================
+Link Energy
+===========
+
+.. doxygengroup:: plugin_link_energy
+
+.. _plugin_link_energy_wifi:
+
+WiFi Energy
+===========
+
+.. doxygengroup:: plugin_link_energy_wifi
+
-.. doxygengroup:: Plugin_link_energy
.. _plugin_host_load:
-Host Load Plugin
-================
+Host Load
+=========
+
+.. doxygengroup:: plugin_host_load
+
+.. _plugin_filesystem:
+
+File System
+===========
+
+.. doxygengroup:: plugin_filesystem
+
+.. _plugin_battery:
+
+Battery
+=======
+
+.. doxygengroup:: plugin_battery
+
+.. _plugin_solar_panel:
+
+Solar Panel
+===========
+
+.. doxygengroup:: plugin_solar_panel
+
+.. _plugin_chiller:
+
+Chiller
+=======
-.. doxygengroup:: Plugin_host_load
+.. doxygengroup:: plugin_chiller
.. LocalWords: SimGrid