+ xbt_free(p_constraintCoreId);
+ xbt_dynar_free(&speedPerPstate_);
+}
+
+double Cpu::getCurrentPowerPeak()
+{
+ return speed_.peak;
+}
+
+int Cpu::getNbPStates()
+{
+ return xbt_dynar_length(speedPerPstate_);
+}
+
+void Cpu::setPState(int pstate_index)
+{
+ xbt_dynar_t plist = speedPerPstate_;
+ xbt_assert(pstate_index <= (int)xbt_dynar_length(plist),
+ "Invalid parameters for CPU %s (pstate %d > length of pstates %d)", getName(), pstate_index, (int)xbt_dynar_length(plist));
+
+ double new_peak_speed = xbt_dynar_get_as(plist, pstate_index, double);
+ pstate_ = pstate_index;
+ speed_.peak = new_peak_speed;
+
+ onSpeedChange();
+}
+
+int Cpu::getPState()
+{
+ return pstate_;
+}
+
+double Cpu::getPowerPeakAt(int pstate_index)
+{
+ xbt_dynar_t plist = speedPerPstate_;
+ xbt_assert((pstate_index <= (int)xbt_dynar_length(plist)), "Invalid parameters (pstate index out of bounds)");
+
+ return xbt_dynar_get_as(plist, pstate_index, double);