-public:
- // TODO, this could be a unique_ptr
- surf::HostImpl* pimpl_ = nullptr;
- /** DO NOT USE DIRECTLY (@todo: these should be protected, once our code is clean) */
- surf::Cpu* pimpl_cpu = nullptr;
- /** DO NOT USE DIRECTLY (@todo: these should be protected, once our code is clean) */
- kernel::routing::NetPoint* pimpl_netpoint = nullptr;
-
- /*** Called on each newly created host */
- static simgrid::xbt::signal<void(Host&)> onCreation;
- /*** Called just before destructing an host */
- static simgrid::xbt::signal<void(Host&)> onDestruction;
- /*** Called when the machine is turned on or off (called AFTER the change) */
- static simgrid::xbt::signal<void(Host&)> onStateChange;
- /*** Called when the speed of the machine is changed (called AFTER the change)
- * (either because of a pstate switch or because of an external load event coming from the profile) */
- static simgrid::xbt::signal<void(Host&)> onSpeedChange;
-};
-}
-} // namespace simgrid::s4u
+ /** @brief Get the peak computing speed in flops/s at the current pstate, NOT taking the external load into account.
+ *
+ * The amount of flops per second available for computing depends on several things:
+ * - The current pstate determines the maximal peak computing speed (use @ref get_pstate_speed() to retrieve the
+ * computing speed you would get at another pstate)
+ * - If you declared an external load (with @ref set_speed_profile()), you must multiply the
+ * result of get_speed() by get_available_speed() to retrieve what a new computation would get.
+ *
+ * The remaining speed is then shared between the executions located on this host.
+ * You can retrieve the amount of tasks currently running on this host with @ref get_load().
+ *
+ * The host may have multiple cores, and your executions may be able to use more than a single core.
+ *
+ * Finally, executions of priority 2 get twice the amount of flops than executions of priority 1.
+ */
+ double get_speed() const;
+ /** @brief Get the available speed ratio, between 0 and 1.
+ *
+ * This accounts for external load (see @ref set_speed_profile()).
+ */
+ double get_available_speed() const;