Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
sg_functions should be wrapping the C++ public API, not internals
[simgrid.git] / src / simgrid / host.cpp
index 3d1a48a..482f21f 100644 (file)
@@ -12,6 +12,7 @@
 #include "surf/surf.h" // routing_get_network_element_type FIXME:killme
 
 #include "src/simix/smx_private.hpp"
+#include "src/surf/host_interface.hpp"
 
 size_t sg_host_count()
 {
@@ -103,9 +104,6 @@ msg_host_priv_t sg_host_msg(sg_host_t host) {
 void sg_host_msg_set(sg_host_t host, msg_host_priv_t smx_host) {
   host->extension_set(MSG_HOST_LEVEL, smx_host);
 }
-void sg_host_msg_destroy(sg_host_t host) {
-  host->extension_set(MSG_HOST_LEVEL, nullptr);
-}
 // ========== SimDag Layer ==============
 SD_workstation_priv_t sg_host_sd(sg_host_t host) {
   return (SD_workstation_priv_t) host->extension(SD_HOST_LEVEL);
@@ -164,6 +162,12 @@ void sg_host_set_pstate(sg_host_t host,int pstate) {
   host->setPState(pstate);
 }
 
+/** @brief Get the properties of an host */
+xbt_dict_t sg_host_get_properties(sg_host_t host) {
+  return host->getProperties();
+}
+
+
 namespace simgrid {
 
 Host::Host(std::string const& id)
@@ -184,8 +188,6 @@ void Host::turnOn()
 /** Stop the host if it is on */
 void Host::turnOff()
 {
-  /* Go to that function to follow the code flow through the simcall barrier */
-  if (0) simcall_HANDLER_host_off(&SIMIX_process_self()->simcall, this);
   simgrid::simix::simcall<void>(SIMCALL_HOST_OFF, this);
 }
 
@@ -200,7 +202,7 @@ bool Host::isOff() {
 /** Get the properties assigned to a host */
 xbt_dict_t Host::getProperties()
 {
-  return simgrid::simix::kernel(std::bind(sg_host_get_properties, this));
+  return simgrid::simix::kernel(std::bind(&simgrid::surf::Host::getProperties, this->extension(simgrid::surf::Host::EXTENSION_ID)));
 }
 
 /** Get the processes attached to the host */
@@ -215,14 +217,14 @@ xbt_swag_t Host::getProcessList()
 double Host::getCurrentPowerPeak()
 {
   return simgrid::simix::kernel(
-    std::bind(SIMIX_host_get_current_power_peak, this));
+    std::bind(surf_host_get_current_power_peak, this));
 }
 
 /** Get one power peak (in flops/s) of a host at a given pstate */
 double Host::getPowerPeakAt(int pstate_index)
 {
   return simgrid::simix::kernel(
-    std::bind(SIMIX_host_get_power_peak_at, this, pstate_index));
+    std::bind(surf_host_get_power_peak_at, this, pstate_index));
 }
 
 /** @brief Get the speed of the cpu associated to a host */
@@ -264,12 +266,16 @@ int Host::getPState()
 
 void Host::getParams(vm_params_t params)
 {
-  simgrid::simix::kernel(std::bind(SIMIX_host_get_params, this, params));
+  simgrid::simix::kernel([&]() {
+    this->extension<simgrid::surf::Host>()->getParams(params);
+  });
 }
 
 void Host::setParams(vm_params_t params)
 {
-  simgrid::simix::kernel(std::bind(SIMIX_host_set_params, this, params));
+  simgrid::simix::kernel([&]() {
+    this->extension<simgrid::surf::Host>()->setParams(params);
+  });
 }
 
 /**
@@ -279,9 +285,9 @@ void Host::setParams(vm_params_t params)
  */
 xbt_dict_t Host::getMountedStorageList()
 {
-  return simgrid::simix::kernel(std::bind(
-    SIMIX_host_get_mounted_storage_list, this
-  ));
+  return simgrid::simix::kernel([&] {
+    return this->extension<simgrid::surf::Host>()->getMountedStorageList();
+  });
 }
 
 /**
@@ -291,9 +297,9 @@ xbt_dict_t Host::getMountedStorageList()
  */
 xbt_dynar_t Host::getAttachedStorageList()
 {
-  return simgrid::simix::kernel(std::bind(
-    SIMIX_host_get_attached_storage_list, this
-  ));
+  return simgrid::simix::kernel([&] {
+    return this->extension<simgrid::surf::Host>()->getAttachedStorageList();
+  });
 }
 
 }