13 TclObject*
create(
int argc,
const char*
const*argv) {
33 std::vector <Capacity>::iterator iter;
34 for (iter = this->specification->capacity.begin(); iter!=this->specification->capacity.end(); iter++)
39 sprintf(out,
"set tmp_cpu_mips %.0f",result);
40 Tcl& tcl = Tcl::instance();
48 if (strcmp(argv[1],
"print") == 0) {
51 }
else if (strcmp(argv[1],
"getMIPS") == 0) {
63 std::cerr <<
"ERROR: Null pointer passed as ResourceSpec.";
67 std::vector<Capacity>::iterator iter_nominal;
68 std::vector<Capacity>::iterator iter_reserved;
69 for(iter_nominal= resspec->
capacity.begin(),iter_reserved=this->capacity.begin();
70 iter_nominal != resspec->
capacity.end();
71 iter_nominal++,iter_reserved++){
72 cores_schedulers_.push_back(
new CoreScheduler(&(*iter_nominal),&(*iter_reserved)));
74 std::vector<CoreScheduler*>::iterator iter;
76 for(iter= cores_schedulers_.begin();
77 iter != cores_schedulers_.end();
79 nominal_mips_ += (*iter)->getNominalMIPS();
86 if(cores_schedulers_.empty()){
87 std::cerr <<
"No core schedulers!\n";
89 std::vector<CoreScheduler*>::iterator iter;
90 for(iter= cores_schedulers_.begin();
91 iter != cores_schedulers_.end();
93 (*iter)->setProvider(provider);
99 if(cores_schedulers_.empty()){
100 std::cerr <<
"No core schedulers!\n";
102 std::vector<CoreScheduler*>::iterator iter;
103 for(iter= cores_schedulers_.begin();
104 iter != cores_schedulers_.end();
106 (*iter)->setDVFS(eDVFS_enabled_);
111 std::vector<CoreScheduler*>::iterator iter;
113 for(iter= cores_schedulers_.begin();
114 iter != cores_schedulers_.end();
117 result += (*iter)->getCurrentMIPSRecursive();
122 return nominal_mips_;
126 return getCurrentMIPS()/getNominalMIPS();
std::vector< Capacity > capacity
void setDVFS(int eDVFS_enabled_)
virtual int setSpecification(ResourceSpec *resspec)
TclObject * create(int argc, const char *const *argv)
void setProvider(ResourceProvider *provider)
virtual int command(int argc, const char *const *argv)
virtual double getUtilization()
virtual int setSpecification(ResourceSpec *resspec)