Scheduler
schedulerConfiguration.cpp
Go to the documentation of this file.
1 
10 #include "schedulerConfiguration.h"
11 
12 #include <utils/randomGenerator.h>
16 
17 #include "governor/maxGovernor.h"
18 #include "governor/minGovernor.h"
20 
26 
29 
30 using namespace Scheduler;
31 
33 {
34  std::string value = getStringValue("scheduler", "governor");
35  if (!value.compare(MinGovernor::configKey))
36  return (new MinGovernor);
37  if (!value.compare(MaxGovernor::configKey))
38  return (new MaxGovernor);
39  if (!value.compare(ConservativeGovernor::configKey))
40  return (new ConservativeGovernor);
41  return nullptr;
42 }
43 
44 
45 std::unique_ptr<SchedulingDiscipline> SchedulerConfiguration::getDisciplineFromFile()
46 {
47  std::unique_ptr<SchedulingDiscipline> disc{nullptr};
48  std::string value = getStringValue("scheduler", "discipline");
49  if (!value.compare(EdfDiscipline::configKey))
50  disc = std::make_unique<EdfDiscipline>(std::dynamic_pointer_cast<SchedulerConfiguration>(shared_from_this()));
51  if (!value.compare(FcfsDiscipline::configKey))
52  disc = std::make_unique<FcfsDiscipline>(std::dynamic_pointer_cast<SchedulerConfiguration>(shared_from_this()));
53  if (!value.compare(FixedPriorityDiscipline::configKey))
54  disc = std::make_unique<FixedPriorityDiscipline>(std::dynamic_pointer_cast<SchedulerConfiguration>(shared_from_this()));
55  if (!value.compare(RmsDiscipline::configKey))
56  disc = std::make_unique<RmsDiscipline>(std::dynamic_pointer_cast<SchedulerConfiguration>(shared_from_this()));
57  if (!value.compare(RoundRobinDiscipline::configKey))
58  disc = std::make_unique<RoundRobinDiscipline>(std::dynamic_pointer_cast<SchedulerConfiguration>(shared_from_this()));
59  return std::move(disc);
60 }
61 
62 
63 
64 
66 {
67  std::string value = getStringValue("scheduler", "temperatureModel");
68  if (!value.compare(SimpleTemperatureModel::configKey))
69  return (new SimpleTemperatureModel(shared_from_this()));
70  if (!value.compare(TemperatureAndAgingModel::configKey))
71  return (new TemperatureAndAgingModel(shared_from_this()));
72  return nullptr;
73 }
74 
75 
77 {
78  return getDoubleValue("scheduler", "runningTime");
79 }
80 
81 
82 std::shared_ptr<Utils::BoundedRandomDistribution>
84 {
85  std::string value = getStringValue("scheduler", "distribution");
86  std::shared_ptr<Utils::BoundedRandomDistribution> ret = nullptr;
87  if (!value.compare("uniform"))
88  {
89  ret = std::make_shared<Utils::UniformDistribution>(gen);
90  }
91  if (!value.compare("none") || !value.compare("deterministic"))
92  {
93  ret = std::make_shared<Utils::DiracOneDistribution>(gen);
94  }
95  if (!value.substr(0, 9).compare("bernoulli"))
96  {
97  double p = std::stod(value.substr(9, std::string::npos));
98  ret = std::make_shared<Utils::Bernoulli>(gen, p);
99  }
100  return ret;
101 }
102 
103 
104 
105 
static constexpr const char * configKey
static constexpr const char * configKey
static constexpr const char * configKey
virtual TemperatureModel * getTemperatureModelFromFile()
static constexpr const char * configKey
Definition: edfDiscipline.h:25
virtual double getDoubleValue(std::string section, std::string key)
virtual std::unique_ptr< SchedulingDiscipline > getDisciplineFromFile()
static constexpr const char * configKey
static constexpr const char * configKey
static constexpr const char * configKey
Definition: rmsDiscipline.h:23
static constexpr const char * configKey
Definition: minGovernor.h:22
virtual std::shared_ptr< Utils::BoundedRandomDistribution > getDistributionFromFile(Utils::RandomGenerator *gen)
virtual FreqGovernor * getFreqGovernorFromFile()
static constexpr const char * configKey
static constexpr const char * configKey
Definition: maxGovernor.h:21
virtual std::string getStringValue(std::string section, std::string key)