Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[surf] Hardcode some of the sg_platf_host callbacks
[simgrid.git] / src / surf / host_clm03.cpp
index 740b9ef..29118fb 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2014. The SimGrid Team.
+/* Copyright (c) 2013-2015. The SimGrid Team.
  * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
@@ -8,7 +8,7 @@
 
 #include "cpu_cas01.hpp"
 #include "simgrid/sg_config.h"
-#include "vm_interface.hpp"
+#include "virtual_machine.hpp"
 
 XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(surf_host);
 
@@ -28,9 +28,7 @@ void surf_host_model_init_current_default(void)
   surf_network_model_init_LegrandVelho();
 
   Model *model = surf_host_model;
-  xbt_dynar_push(model_list, &model);
-  xbt_dynar_push(model_list_invoke, &model);
-  sg_platf_host_add_cb(host_parse_init);
+  xbt_dynar_push(all_existing_models, &model);
 }
 
 void surf_host_model_init_compound()
@@ -41,9 +39,7 @@ void surf_host_model_init_compound()
   surf_host_model = new HostCLM03Model();
 
   Model *model = surf_host_model;
-  xbt_dynar_push(model_list, &model);
-  xbt_dynar_push(model_list_invoke, &model);
-  sg_platf_host_add_cb(host_parse_init);
+  xbt_dynar_push(all_existing_models, &model);
 }
 
 Host *HostCLM03Model::createHost(const char *name){
@@ -52,6 +48,7 @@ Host *HostCLM03Model::createHost(const char *name){
                  (xbt_dynar_t)xbt_lib_get_or_null(storage_lib, name, ROUTING_STORAGE_HOST_LEVEL),
                  sg_host_edge(sg_host),
                  sg_host_surfcpu(sg_host));
+  surf_callback_emit(hostCreatedCallbacks, host);
   XBT_DEBUG("Create host %s with %ld mounted disks", name, xbt_dynar_length(host->p_storage));
   xbt_lib_set(host_lib, name, SURF_HOST_LEVEL, host);
   return host;
@@ -84,7 +81,7 @@ void HostCLM03Model::updateActionsState(double /*now*/, double /*delta*/){
 }
 
 Action *HostCLM03Model::executeParallelTask(int host_nb,
-                                        void **host_list,
+                                        sg_host_t *host_list,
                                         double *flops_amount,
                                         double *bytes_amount,
                                         double rate){
@@ -92,11 +89,11 @@ Action *HostCLM03Model::executeParallelTask(int host_nb,
   Action *action =NULL;
   if ((host_nb == 1)
       && (cost_or_zero(bytes_amount, 0) == 0.0)){
-    action = static_cast<HostCLM03*>(host_list[0])->execute(flops_amount[0]);
+    action = surf_host_execute(host_list[0],flops_amount[0]);
   } else if ((host_nb == 1)
            && (cost_or_zero(flops_amount, 0) == 0.0)) {
-    action = surf_network_model->communicate(static_cast<HostCLM03*>(host_list[0])->p_netElm,
-                                                static_cast<HostCLM03*>(host_list[0])->p_netElm,
+    action = surf_network_model->communicate(sg_host_edge(host_list[0]),
+                                                sg_host_edge(host_list[0]),
                                                                                         bytes_amount[0], rate);
   } else if ((host_nb == 2)
              && (cost_or_zero(flops_amount, 0) == 0.0)
@@ -111,8 +108,8 @@ Action *HostCLM03Model::executeParallelTask(int host_nb,
       }
     }
     if (nb == 1){
-      action = surf_network_model->communicate(static_cast<HostCLM03*>(host_list[0])->p_netElm,
-                                                  static_cast<HostCLM03*>(host_list[1])->p_netElm,
+      action = surf_network_model->communicate(sg_host_edge(host_list[0]),
+                                                  sg_host_edge(host_list[1]),
                                                                                           value, rate);
     }
   } else