X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/16eadae63a0a9fae794e0f3c73eb7b12cfdbf225..f159a7002798e65df6c90c3b9f774f48920aa41b:/src/surf/cpu_interface.cpp diff --git a/src/surf/cpu_interface.cpp b/src/surf/cpu_interface.cpp index f362818680..475e236447 100644 --- a/src/surf/cpu_interface.cpp +++ b/src/surf/cpu_interface.cpp @@ -31,11 +31,7 @@ Cpu *getActionCpu(CpuAction *action) { action->getVariable(), 0))); } -simgrid::surf::signal cpuActionStateChangedCallbacks; - -void cpu_add_traces(){ - surf_cpu_model_pm->addTraces(); -} +simgrid::xbt::signal cpuActionStateChangedCallbacks; /********* * Model * @@ -131,31 +127,25 @@ void CpuModel::updateActionsStateFull(double now, double delta) /************ * Resource * ************/ -Cpu::Cpu() -{ - xbt_die("FIXME: DEADCODE"); -} - - -Cpu::Cpu(Model *model, simgrid::Host *host, +Cpu::Cpu(Model *model, simgrid::s4u::Host *host, xbt_dynar_t speedPeakList, int pstate, int core, double speedPeak, double speedScale, - e_surf_resource_state_t stateInitial) - : Cpu(model, host, NULL/*constraint*/, speedPeakList, pstate, core, speedPeak, speedScale, stateInitial) + int initiallyOn) + : Cpu(model, host, NULL/*constraint*/, speedPeakList, pstate, core, speedPeak, speedScale, initiallyOn) { } -Cpu::Cpu(Model *model, simgrid::Host *host, lmm_constraint_t constraint, +Cpu::Cpu(Model *model, simgrid::s4u::Host *host, lmm_constraint_t constraint, xbt_dynar_t speedPeakList, int pstate, int core, double speedPeak, - double speedScale, e_surf_resource_state_t stateInitial) - : Resource(model, host->getName().c_str(), constraint, stateInitial) + double speedScale, int initiallyOn) + : Resource(model, host->name().c_str(), constraint, initiallyOn) , m_core(core) , m_speedPeak(speedPeak) , m_speedScale(speedScale) , m_host(host) { - host->p_cpu = this; + host->pimpl_cpu = this; xbt_assert(m_speedScale > 0, "Available speed has to be >0"); // Copy the power peak array: @@ -179,28 +169,12 @@ Cpu::Cpu(Model *model, simgrid::Host *host, lmm_constraint_t constraint, int i; for (i = 0; i < core; i++) { /* just for a unique id, never used as a string. */ - p_constraintCoreId[i] = bprintf("%s:%i", host->getName().c_str(), i); + p_constraintCoreId[i] = bprintf("%s:%i", host->name().c_str(), i); p_constraintCore[i] = lmm_constraint_new(model->getMaxminSystem(), p_constraintCoreId[i], m_speedScale * m_speedPeak); } } } -Cpu::Cpu(Model *model, simgrid::Host *host, lmm_constraint_t constraint, - xbt_dynar_t speedPeakList, int pstate, - int core, double speedPeak, double speedScale) -: Cpu(model, host, constraint, speedPeakList, pstate, core, speedPeak, speedScale, SURF_RESOURCE_ON) -{ - xbt_die("FIXME: DEADCODE"); -} - -Cpu::Cpu(Model *model, simgrid::Host *host, - xbt_dynar_t speedPeakList, int pstate, - int core, double speedPeak, double speedScale) -: Cpu(model, host, speedPeakList, pstate, core, speedPeak, speedScale, SURF_RESOURCE_ON) -{ - xbt_die("FIXME: DEADCODE"); -} - Cpu::~Cpu() { if (p_constraintCoreId){ @@ -232,6 +206,8 @@ void Cpu::setPState(int pstate_index) double new_peak_speed = xbt_dynar_get_as(plist, pstate_index, double); m_pstate = pstate_index; m_speedPeak = new_peak_speed; + + onSpeedChange(); } int Cpu::getPState() @@ -258,11 +234,31 @@ double Cpu::getAvailableSpeed() return m_speedScale; } +void Cpu::onSpeedChange() { + TRACE_surf_host_set_speed(surf_get_clock(), getName(), + m_core * m_speedScale * m_speedPeak); +} + + int Cpu::getCore() { return m_core; } +void Cpu::set_state_trace(tmgr_trace_t trace) +{ + xbt_assert(p_stateEvent==NULL,"Cannot set a second state trace to Host %s", m_host->name().c_str()); + + p_stateEvent = future_evt_set->add_trace(trace, 0.0, this); +} +void Cpu::set_speed_trace(tmgr_trace_t trace) +{ + xbt_assert(p_speedEvent==NULL,"Cannot set a second speed trace to Host %s", m_host->name().c_str()); + + p_speedEvent = future_evt_set->add_trace(trace, 0.0, this); +} + + /********** * Action * **********/ @@ -363,12 +359,12 @@ void CpuAction::setAffinity(Cpu *cpu, unsigned long mask) XBT_OUT(); } -simgrid::surf::signal CpuAction::onStateChange; +simgrid::xbt::signal CpuAction::onStateChange; void CpuAction::setState(e_surf_action_state_t state){ - e_surf_action_state_t old = getState(); + e_surf_action_state_t previous = getState(); Action::setState(state); - onStateChange(this, old, state); + onStateChange(this, previous); } }