X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/9e520c5a3497bcaad04415c221071ef9be69866d..6c0f90ea1c7373c9c3caf6b14b43aa12470c0ab2:/docs/source/Plugins.rst
diff --git a/docs/source/Plugins.rst b/docs/source/Plugins.rst
index 01c836bc1a..0594693ee8 100644
--- a/docs/source/Plugins.rst
+++ b/docs/source/Plugins.rst
@@ -1,44 +1,49 @@
.. _plugins:
+SimGrid Plugins
+###############
+
.. raw:: html
-
+
-
-
-
-SimGrid Plugins
-###############
+
+
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.
+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:`WiFi Energy `: models the energy dissipation of wifi links.
-- :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.
+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
+list of existing plugins with ``--cfg=plugin:help``.
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:
@@ -48,46 +53,64 @@ 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 `
+- :cpp:func:`Actor::on_creation `
+ :cpp:func:`Actor::on_suspend `
+ :cpp:func:`Actor::on_resume `
+ :cpp:func:`Actor::on_sleep `
+ :cpp:func:`Actor::on_wake_up `
+ :cpp:func:`Actor::on_host_change `
+ :cpp:func:`Actor::on_termination `
+ :cpp:func:`Actor::on_destruction `
+- :cpp:func:`Comm::on_send `
+ :cpp:func:`Comm::on_recv `
+ :cpp:func:`Comm::on_completion `
+- :cpp:func:`CommImpl::on_start `
+ :cpp:func:`CommImpl::on_completion `
+- :cpp:func:`Disk::on_creation `
+ :cpp:func:`Disk::on_destruction `
+ :cpp:func:`Disk::on_state_change `
+- :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 `
+- :cpp:func:`Exec::on_start `
+ :cpp:func:`Exec::on_completion `
+- :cpp:func:`Host::on_creation `
+ :cpp:func:`Host::on_destruction `
+ :cpp:func:`Host::on_state_change `
+ :cpp:func:`Host::on_speed_change `
+- :cpp:func:`Io::on_start `
+ :cpp:func:`Io::on_completion `
+- :cpp:func:`Link::on_creation `
+ :cpp:func:`Link::on_destruction `
+ :cpp:func:`Link::on_state_change `
+ :cpp:func:`Link::on_speed_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_started `
+ :cpp:func:`VirtualMachine::on_suspend `
+ :cpp:func:`VirtualMachine::on_resume `
+ :cpp:func:`VirtualMachine::on_migration_start `
+ :cpp:func:`VirtualMachine::on_migration_end `
Existing Plugins
****************
@@ -97,23 +120,44 @@ 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
-.. doxygengroup:: Plugin_host_load
.. LocalWords: SimGrid