Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
cosmetics: rename a function, deprecate old name
[simgrid.git] / src / simgrid / host.cpp
index c1200be..e8ea892 100644 (file)
@@ -37,8 +37,12 @@ size_t sg_host_count()
  */
 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)
@@ -71,8 +75,7 @@ xbt_dynar_t sg_hosts_as_dynar()
 {
   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())
@@ -126,6 +129,17 @@ double sg_host_speed(sg_host_t host)
   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();
@@ -154,6 +168,55 @@ void sg_host_set_pstate(sg_host_t host,int pstate) {
   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);