X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ab4213398ecc52ebe7bcf337e43bb85cc30dedf3..1b211507e0c2abe5f2b7fbe56988af46d3189b51:/docs/source/Plugins.rst
diff --git a/docs/source/Plugins.rst b/docs/source/Plugins.rst
index 8f55ae3a29..aeac133ece 100644
--- a/docs/source/Plugins.rst
+++ b/docs/source/Plugins.rst
@@ -12,16 +12,17 @@ SimGrid Plugins
elem.style="opacity:0.93999999;fill:#ff0000;fill-opacity:0.1;stroke:#000000;stroke-width:0.35277778;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1";
}
-
-
+
+
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.
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 +33,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 +53,117 @@ 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.
+.. 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.
+
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 `
+- 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_suspend `
+ :cpp:func:`Comm::on_this_suspend `
+ :cpp:func:`Comm::on_resume `
+ :cpp:func:`Comm::on_this_resume `
+ :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_suspend `
+ :cpp:func:`Exec::on_this_suspend `
+ :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_suspend `
+ :cpp:func:`Io::on_this_suspend `
+ :cpp:func:`Io::on_resume `
+ :cpp:func:`Io::on_this_resume `
+ :cpp:func:`Io::on_veto `
+ :cpp:func:`Io::on_this_veto `
Existing Plugins
****************
@@ -101,23 +173,64 @@ 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_task:
+
+Task
+===========
+
+.. doxygengroup:: plugin_task
+
+.. _plugin_photovoltaic:
+
+Photovoltaic
+===========
-.. doxygengroup:: Plugin_host_load
+.. doxygengroup:: plugin_photovoltaic
.. LocalWords: SimGrid