+/* Copyright (c) 2013-2014. The SimGrid Team.
+ * All rights reserved. */
+
+/* This program is free software; you can redistribute it and/or modify it
+ * under the terms of the license (GNU LGPL) which comes with this package. */
+
#include "workstation_clm03.hpp"
#include "vm_workstation_interface.hpp"
#include "cpu_cas01.hpp"
sg_platf_host_add_cb(workstation_new);
}
-WorkstationCLM03Model::WorkstationCLM03Model(string name)
- : WorkstationModel(name)
-{}
-
-
WorkstationCLM03Model::WorkstationCLM03Model()
: WorkstationModel("Workstation")
{
createResource(host->id);
}
-WorkstationPtr WorkstationCLM03Model::createResource(string name){
+WorkstationPtr WorkstationCLM03Model::createResource(const char *name){
- WorkstationPtr workstation = new WorkstationCLM03Lmm(surf_workstation_model, name.c_str(), NULL,
- (xbt_dynar_t)xbt_lib_get_or_null(storage_lib, name.c_str(), ROUTING_STORAGE_HOST_LEVEL),
- (RoutingEdgePtr)xbt_lib_get_or_null(host_lib, name.c_str(), ROUTING_HOST_LEVEL),
- dynamic_cast<CpuPtr>(static_cast<ResourcePtr>(xbt_lib_get_or_null(host_lib, name.c_str(), SURF_CPU_LEVEL))));
- XBT_DEBUG("Create workstation %s with %ld mounted disks", name.c_str(), xbt_dynar_length(workstation->p_storage));
- xbt_lib_set(host_lib, name.c_str(), SURF_WKS_LEVEL, static_cast<ResourcePtr>(workstation));
+ WorkstationPtr workstation = new WorkstationCLM03(surf_workstation_model, name, NULL,
+ (xbt_dynar_t)xbt_lib_get_or_null(storage_lib, name, ROUTING_STORAGE_HOST_LEVEL),
+ (RoutingEdgePtr)xbt_lib_get_or_null(host_lib, name, ROUTING_HOST_LEVEL),
+ static_cast<CpuPtr>(xbt_lib_get_or_null(host_lib, name, SURF_CPU_LEVEL)));
+ XBT_DEBUG("Create workstation %s with %ld mounted disks", name, xbt_dynar_length(workstation->p_storage));
+ xbt_lib_set(host_lib, name, SURF_WKS_LEVEL, static_cast<ResourcePtr>(workstation));
return workstation;
}
adjustWeightOfDummyCpuActions();
double min_by_cpu = p_cpuModel->shareResources(now);
- double min_by_net = surf_network_model->shareResources(now);
+ double min_by_net = (strcmp(surf_network_model->getName(), "network NS3")) ? surf_network_model->shareResources(now) : -1;
double min_by_sto = -1;
if (p_cpuModel == surf_cpu_model_pm)
min_by_sto = surf_storage_model->shareResources(now);
XBT_DEBUG("model %p, %s min_by_cpu %f, %s min_by_net %f, %s min_by_sto %f",
- this, surf_cpu_model_pm->m_name.c_str(), min_by_cpu,
- surf_network_model->m_name.c_str(), min_by_net,
- surf_storage_model->m_name.c_str(), min_by_sto);
+ this, surf_cpu_model_pm->getName(), min_by_cpu,
+ surf_network_model->getName(), min_by_net,
+ surf_storage_model->getName(), min_by_sto);
double res = max(max(min_by_cpu, min_by_net), min_by_sto);
if (min_by_cpu >= 0.0 && min_by_cpu < res)
#define cost_or_zero(array,pos) ((array)?(array)[pos]:0.0)
if ((workstation_nb == 1)
&& (cost_or_zero(communication_amount, 0) == 0.0))
- return ((WorkstationCLM03LmmPtr)workstation_list[0])->execute(computation_amount[0]);
+ return ((WorkstationCLM03Ptr)workstation_list[0])->execute(computation_amount[0]);
else if ((workstation_nb == 1)
&& (cost_or_zero(computation_amount, 0) == 0.0))
- return communicate((WorkstationCLM03LmmPtr)workstation_list[0], (WorkstationCLM03LmmPtr)workstation_list[0],communication_amount[0], rate);
+ return communicate((WorkstationCLM03Ptr)workstation_list[0], (WorkstationCLM03Ptr)workstation_list[0],communication_amount[0], rate);
else if ((workstation_nb == 2)
&& (cost_or_zero(computation_amount, 0) == 0.0)
&& (cost_or_zero(computation_amount, 1) == 0.0)) {
}
}
if (nb == 1)
- return communicate((WorkstationCLM03LmmPtr)workstation_list[0], (WorkstationCLM03LmmPtr)workstation_list[1],value, rate);
+ return communicate((WorkstationCLM03Ptr)workstation_list[0], (WorkstationCLM03Ptr)workstation_list[1],value, rate);
}
#undef cost_or_zero
return NULL;
}
-/* returns an array of network_link_CM02_t */
-xbt_dynar_t WorkstationCLM03Model::getRoute(WorkstationPtr src, WorkstationPtr dst)
-{
- XBT_DEBUG("ws_get_route");
- return surf_network_model->getRoute(src->p_netElm, dst->p_netElm);
-}
-
ActionPtr WorkstationCLM03Model::communicate(WorkstationPtr src, WorkstationPtr dst, double size, double rate){
return surf_network_model->communicate(src->p_netElm, dst->p_netElm, size, rate);
}
/************
* Resource *
************/
-WorkstationCLM03Lmm::WorkstationCLM03Lmm(WorkstationModelPtr model, const char* name, xbt_dict_t properties, xbt_dynar_t storage, RoutingEdgePtr netElm, CpuPtr cpu)
- : Resource(model, name, properties), Workstation(storage, netElm, cpu) {}
+WorkstationCLM03::WorkstationCLM03(WorkstationModelPtr model, const char* name, xbt_dict_t properties, xbt_dynar_t storage, RoutingEdgePtr netElm, CpuPtr cpu)
+ : Workstation(model, name, properties, storage, netElm, cpu) {}
-bool WorkstationCLM03Lmm::isUsed(){
+bool WorkstationCLM03::isUsed(){
THROW_IMPOSSIBLE; /* This model does not implement parallel tasks */
return -1;
}
-void WorkstationCLM03Lmm::updateState(tmgr_trace_event_t /*event_type*/, double /*value*/, double /*date*/){
+void WorkstationCLM03::updateState(tmgr_trace_event_t /*event_type*/, double /*value*/, double /*date*/){
THROW_IMPOSSIBLE; /* This model does not implement parallel tasks */
}
-ActionPtr WorkstationCLM03Lmm::execute(double size) {
+ActionPtr WorkstationCLM03::execute(double size) {
return p_cpu->execute(size);
}
-ActionPtr WorkstationCLM03Lmm::sleep(double duration) {
+ActionPtr WorkstationCLM03::sleep(double duration) {
return p_cpu->sleep(duration);
}
-e_surf_resource_state_t WorkstationCLM03Lmm::getState() {
+e_surf_resource_state_t WorkstationCLM03::getState() {
return p_cpu->getState();
}
-
-
-
-
-
-
-
-
-
/**********
* Action *
**********/