X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/cdf6a962eb4e88efbed3df9c41343adabcf09e6c..8200cf19b036678aac3c1167bea4513670c98a27:/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