-#include "cpu.hpp"
+/* 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 "cpu_interface.hpp"
#include "trace_mgr_private.h"
#include "surf/surf_routing.h"
};
enum trace_type {
-
+
TRACE_FIXED, /*< Trace fixed, no availability file */
TRACE_DYNAMIC /*< Dynamic, availability file disponible */
};
tmgr_trace_t p_powerTrace;
};
-
/*********
* Model *
*********/
~CpuTiModel();
void parseInit(sg_platf_host_cbarg_t host);
- CpuTiPtr createResource(const char *name, double power_peak, double power_scale,
+ CpuPtr createResource(const char *name, xbt_dynar_t powerPeak,
+ int pstate, double power_scale,
tmgr_trace_t power_trace, int core,
e_surf_resource_state_t state_initial,
tmgr_trace_t state_trace,
xbt_dict_t cpu_properties);
- CpuTiActionPtr createAction(double cost, bool failed);
double shareResources(double now);
void updateActionsState(double now, double delta);
void addTraces();
+ ActionListPtr p_runningActionSetThatDoesNotNeedBeingChecked;
+ xbt_swag_t p_modifiedCpu;
+ xbt_heap_t p_tiActionHeap;
+
protected:
- void NotifyResourceTurnedOn(ResourcePtr r){};
- void NotifyResourceTurnedOff(ResourcePtr r){};
+ void NotifyResourceTurnedOn(ResourcePtr){};
+ void NotifyResourceTurnedOff(ResourcePtr){};
- void NotifyActionCancel(ActionPtr a){};
- void NotifyActionResume(ActionPtr a){};
- void NotifyActionSuspend(ActionPtr a){};
+ void NotifyActionCancel(ActionPtr){};
+ void NotifyActionResume(ActionPtr){};
+ void NotifyActionSuspend(ActionPtr){};
};
/************
class CpuTi : public Cpu {
public:
CpuTi() {};
- CpuTi(CpuTiModelPtr model, const char *name, double powerPeak,
- double powerScale, tmgr_trace_t powerTrace, int core,
+ CpuTi(CpuTiModelPtr model, const char *name, xbt_dynar_t powerPeak,
+ int pstate, double powerScale, tmgr_trace_t powerTrace, int core,
e_surf_resource_state_t stateInitial, tmgr_trace_t stateTrace,
xbt_dict_t properties) ;
- ~CpuTi() {};
+ ~CpuTi();
- void updateState(tmgr_trace_event_t event_type, double value, double date);
- void updateActionFinishDate(double now);
+ void updateState(tmgr_trace_event_t event_type, double value, double date);
+ void updateActionsFinishTime(double now);
bool isUsed();
void printCpuTiModel();
- CpuTiModelPtr getModel();
CpuActionPtr execute(double size);
- CpuTiActionPtr _execute(double size);
CpuActionPtr sleep(double duration);
double getAvailableSpeed();
+ double getCurrentPowerPeak() {THROW_UNIMPLEMENTED;};
+ double getPowerPeakAt(int /*pstate_index*/) {THROW_UNIMPLEMENTED;};
+ int getNbPstates() {THROW_UNIMPLEMENTED;};
+ void setPowerPeakAt(int /*pstate_index*/) {THROW_UNIMPLEMENTED;};
+
CpuTiTgmrPtr p_availTrace; /*< Structure with data needed to integrate trace file */
- e_surf_resource_state_t p_stateCurrent; /*< CPU current state (ON or OFF) */
tmgr_trace_event_t p_stateEvent; /*< trace file with states events (ON or OFF) */
- tmgr_trace_event_t p_powerEvent; /*< trace file with availabitly events */
+ tmgr_trace_event_t p_powerEvent; /*< trace file with availability events */
xbt_swag_t p_actionSet; /*< set with all actions running on cpu */
- s_xbt_swag_hookup_t p_modifiedCpuHookup; /*< hookup to swag that indicacates whether share resources must be recalculated or not */
+ s_xbt_swag_hookup_t p_modifiedCpuHookup; /*< hookup to swag that indicates whether share resources must be recalculated or not */
double m_sumPriority; /*< the sum of actions' priority that are running on cpu */
double m_lastUpdate; /*< last update of actions' remaining amount done */
+
+ int m_pstate; /*< Current pstate (index in the power_peak_list)*/
+ double current_frequency;
+
void updateRemainingAmount(double now);
};
/**********
* Action *
**********/
+
class CpuTiAction: public CpuAction {
+ friend CpuActionPtr CpuTi::execute(double size);
+ friend CpuActionPtr CpuTi::sleep(double duration);
+ friend void CpuTi::updateActionsFinishTime(double now);//FIXME
+ friend void CpuTi::updateRemainingAmount(double now);//FIXME
+
public:
- CpuTiAction() {};
- CpuTiAction(CpuTiModelPtr model, double cost, bool failed): CpuAction(model, cost, failed) {};
+ CpuTiAction(CpuTiModelPtr model, double cost, bool failed,
+ CpuTiPtr cpu);
void setState(e_surf_action_state_t state);
int unref();
void setMaxDuration(double duration);
void setPriority(double priority);
double getRemains();
+ void setAffinity(CpuPtr /*cpu*/, unsigned long /*mask*/) {};
+
CpuTiPtr p_cpu;
int m_indexHeap;
+ s_xbt_swag_hookup_t p_cpuListHookup;
int m_suspended;
private:
};