*/
sg_host_t *sg_host_list() {
xbt_assert(sg_host_count() > 0, "There is no host!");
+ std::vector<simgrid::s4u::Host*> hosts = simgrid::s4u::Engine::getInstance()->getAllHosts();
- return (sg_host_t*)xbt_dynar_to_array(sg_hosts_as_dynar());
+ sg_host_t* res = (sg_host_t*)malloc(sizeof(sg_host_t) * hosts.size());
+ memcpy(res, hosts.data(), sizeof(sg_host_t) * hosts.size());
+
+ return res;
}
const char *sg_host_get_name(sg_host_t host)
{
xbt_dynar_t res = xbt_dynar_new(sizeof(sg_host_t),nullptr);
- std::vector<simgrid::s4u::Host*> list;
- simgrid::s4u::Engine::getInstance()->getHostList(&list);
+ std::vector<simgrid::s4u::Host*> list = simgrid::s4u::Engine::getInstance()->getAllHosts();
for (auto const& host : list) {
if (host && host->pimpl_netpoint && host->pimpl_netpoint->isHost())
return host->getSpeed();
}
+/** \ingroup m_host_management
+ * \brief Return the number of cores.
+ *
+ * \param host a host
+ * \return the number of cores
+ */
+int sg_host_core_count(sg_host_t host)
+{
+ return host->getCoreCount();
+}
+
double sg_host_get_available_speed(sg_host_t host)
{
return host->pimpl_cpu->getAvailableSpeed();
host->setPstate(pstate);
}
+/** \ingroup m_host_management
+ *
+ * \brief Start the host if it is off
+ *
+ * See also #sg_host_is_on() and #sg_host_is_off() to test the current state of the host and @ref plugin_energy
+ * for more info on DVFS.
+ */
+void sg_host_turn_on(sg_host_t host)
+{
+ host->turnOn();
+}
+
+/** \ingroup m_host_management
+ *
+ * \brief Stop the host if it is on
+ *
+ * See also #MSG_host_is_on() and #MSG_host_is_off() to test the current state of the host and @ref plugin_energy
+ * for more info on DVFS.
+ */
+void sg_host_turn_off(sg_host_t host)
+{
+ host->turnOff();
+}
+
+/** @ingroup m_host_management
+ * @brief Determine if a host is up and running.
+ *
+ * See also #sg_host_turn_on() and #sg_host_turn_off() to switch the host ON and OFF and @ref plugin_energy for more
+ * info on DVFS.
+ *
+ * @param host host to test
+ * @return Returns true if the host is up and running, and false if it's currently down
+ */
+int sg_host_is_on(sg_host_t host)
+{
+ return host->isOn();
+}
+
+/** @ingroup m_host_management
+ * @brief Determine if a host is currently off.
+ *
+ * See also #sg_host_turn_on() and #sg_host_turn_off() to switch the host ON and OFF and @ref plugin_energy for more
+ * info on DVFS.
+ */
+int sg_host_is_off(sg_host_t host)
+{
+ return host->isOff();
+}
+
/** @brief Get the properties of an host */
xbt_dict_t sg_host_get_properties(sg_host_t host) {
xbt_dict_t as_dict = xbt_dict_new_homogeneous(xbt_free_f);