X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/aa5a7febd33d50d8457f71c35f11c39bef0b64e4..7817355e1053db0ad176750462d290516dc993e3:/src/surf/cpu_cas01.cpp?ds=sidebyside diff --git a/src/surf/cpu_cas01.cpp b/src/surf/cpu_cas01.cpp index 4d9ae260da..8644a7b0a5 100644 --- a/src/surf/cpu_cas01.cpp +++ b/src/surf/cpu_cas01.cpp @@ -30,7 +30,6 @@ void surf_cpu_model_init_Cas01() surf_cpu_model_pm = new CpuCas01Model(); surf_cpu_model_vm = new CpuCas01Model(); - sg_platf_host_add_cb(cpu_parse_init); sg_platf_postparse_add_cb(cpu_add_traces); Model *model_pm = surf_cpu_model_pm; @@ -114,10 +113,7 @@ Cpu *CpuCas01Model::createCpu(const char *name, xbt_dynar_t power_peak, xbt_assert(core > 0, "Invalid number of cores %d. Must be larger than 0", core); cpu = new CpuCas01(this, name, power_peak, pstate, power_scale, power_trace, core, state_initial, state_trace, cpu_properties); - surf_callback_emit(cpuCreatedCallbacks, cpu); - surf_callback_emit(cpuStateChangedCallbacks, cpu, SURF_RESOURCE_ON, state_initial); - sg_host_surfcpu_set(host, cpu); - + sg_host_surfcpu_register(host, cpu); return cpu; } @@ -170,7 +166,15 @@ CpuCas01::CpuCas01(CpuCas01Model *model, const char *name, xbt_dynar_t powerPeak core, xbt_dynar_get_as(powerPeak, pstate, double), powerScale, stateInitial) { p_powerEvent = NULL; - p_powerPeakList = powerPeak; + + // Copy the power peak array: + p_powerPeakList = xbt_dynar_new(sizeof(double), nullptr); + unsigned long n = xbt_dynar_length(powerPeak); + for (unsigned long i = 0; i != n; ++i) { + double value = xbt_dynar_get_as(powerPeak, i, double); + xbt_dynar_push(p_powerPeakList, &value); + } + m_pstate = pstate; XBT_DEBUG("CPU create: peak=%f, pstate=%d", m_powerPeak, m_pstate);