aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--devices/ahci.cpp4
-rw-r--r--devices/alsa.cpp2
-rw-r--r--devices/backlight.cpp4
-rw-r--r--devices/i915-gpu.cpp2
-rw-r--r--devices/thinkpad-fan.cpp4
-rw-r--r--parameters/learn.cpp4
-rw-r--r--parameters/parameters.cpp34
-rw-r--r--parameters/parameters.h3
8 files changed, 31 insertions, 26 deletions
diff --git a/devices/ahci.cpp b/devices/ahci.cpp
index e897cd4..5716235 100644
--- a/devices/ahci.cpp
+++ b/devices/ahci.cpp
@@ -166,10 +166,10 @@ double ahci::power_usage(struct result_bundle *result, struct parameter_bundle *
static int partial_index = 0;
if (!active_index)
- active_index = param_index["ahci-link-power-active"];
+ active_index = get_param_index("ahci-link-power-active");
if (!partial_index)
- active_index = param_index["ahci-link-power-partial"];
+ active_index = get_param_index("ahci-link-power-partial");
power = 0;
factor = get_parameter_value(active_index, bundle);
diff --git a/devices/alsa.cpp b/devices/alsa.cpp
index eaedc29..175a6e5 100644
--- a/devices/alsa.cpp
+++ b/devices/alsa.cpp
@@ -138,7 +138,7 @@ double alsa::power_usage(struct result_bundle *result, struct parameter_bundle *
power = 0;
if (!index)
- index = param_index["alsa-codec-power"];
+ index = get_param_index("alsa-codec-power");
factor = get_parameter_value(index, bundle);
utilization = get_result_value(name, result);
diff --git a/devices/backlight.cpp b/devices/backlight.cpp
index 87ec793..c547e18 100644
--- a/devices/backlight.cpp
+++ b/devices/backlight.cpp
@@ -163,9 +163,9 @@ double backlight::power_usage(struct result_bundle *result, struct parameter_bun
static int bl_index = 0, blp_index = 0;
if (!bl_index)
- bl_index = param_index["backlight"];
+ bl_index = get_param_index("backlight");
if (!blp_index)
- bl_index = param_index["backlight-power"];
+ bl_index = get_param_index("backlight-power");
power = 0;
factor = get_parameter_value(bl_index, bundle);
diff --git a/devices/i915-gpu.cpp b/devices/i915-gpu.cpp
index aa1de6b..f1c5ed0 100644
--- a/devices/i915-gpu.cpp
+++ b/devices/i915-gpu.cpp
@@ -60,7 +60,7 @@ double i915gpu::power_usage(struct result_bundle *result, struct parameter_bundl
static int index = 0;
if (!index)
- index = param_index["gpu-operations"];
+ index = get_param_index("gpu-operations");
power = 0;
factor = get_parameter_value(index, bundle);
diff --git a/devices/thinkpad-fan.cpp b/devices/thinkpad-fan.cpp
index a4fa39a..c60dbab 100644
--- a/devices/thinkpad-fan.cpp
+++ b/devices/thinkpad-fan.cpp
@@ -69,9 +69,9 @@ double thinkpad_fan::power_usage(struct result_bundle *result, struct parameter_
static int fan_index = 0, fansqr_index = 0;
if (!fan_index)
- fan_index = param_index["thinkpad-fan"];
+ fan_index = get_param_index("thinkpad-fan");
if (!fansqr_index)
- fansqr_index = param_index["thinkpad-fan-sqr"];
+ fansqr_index = get_param_index("thinkpad-fan-sqr");
power = 0;
utilization = get_result_value("thinkpad-fan", result);
diff --git a/parameters/learn.cpp b/parameters/learn.cpp
index 7c2e83f..7232fb4 100644
--- a/parameters/learn.cpp
+++ b/parameters/learn.cpp
@@ -69,7 +69,7 @@ void learn_parameters(int iterations)
best_so_far = &all_parameters;
if (!bpi)
- bpi = param_index["base power"];
+ bpi = get_param_index("base power");
calculate_params(best_so_far);
best_score = best_so_far->score;
@@ -107,7 +107,7 @@ void learn_parameters(int iterations)
orgscore = best_score = best_so_far->score;
- for (i = 0; i < best_so_far->parameters.size(); i++) {
+ for (i = 1; i < best_so_far->parameters.size(); i++) {
double value, orgvalue;
orgvalue = value = best_so_far->parameters[i];
diff --git a/parameters/parameters.cpp b/parameters/parameters.cpp
index 48c849f..068ebaa 100644
--- a/parameters/parameters.cpp
+++ b/parameters/parameters.cpp
@@ -11,18 +11,28 @@ struct result_bundle all_results;
vector <struct result_bundle *> past_results;
map <string, int> param_index;
-static int maxindex = 0;
+static int maxindex = 1;
-
-void register_parameter(const char *name, double default_value)
+int get_param_index(const char *name)
{
int index;
-
index = param_index[name];
if (index == 0) {
index = param_index[name] = ++maxindex;
}
+ if (index == 0)
+ printf("OH BLA\n");
+ return index;
+}
+
+
+void register_parameter(const char *name, double default_value)
+{
+ int index;
+
+ index = get_param_index(name);
+
if (index >= (int)all_parameters.parameters.size())
all_parameters.parameters.resize(index+1);
@@ -34,10 +44,7 @@ void set_parameter_value(const char *name, double value, struct parameter_bundle
{
int index;
- index = param_index[name];
- if (index == 0) {
- index = param_index[name] = ++maxindex;
- }
+ index = get_param_index(name);
if (index >= (int)bundle->parameters.size())
bundle->parameters.resize(index+1);
@@ -49,10 +56,7 @@ double get_parameter_value(const char *name, struct parameter_bundle *the_bundle
{
int index;
- index = param_index[name];
- if (index == 0) {
- index = param_index[name] = ++maxindex;
- }
+ index = get_param_index(name);
return the_bundle->parameters[index];
}
@@ -93,7 +97,7 @@ double compute_bundle(struct parameter_bundle *parameters, struct result_bundle
static int bpi = 0;
if (!bpi)
- bpi = param_index["base power"];
+ bpi = get_param_index("base power");
power = parameters->parameters[bpi];
@@ -117,7 +121,7 @@ double bundle_power(struct parameter_bundle *parameters, struct result_bundle *r
static int bpi = 0;
if (!bpi)
- bpi = param_index["base power"];
+ bpi = get_param_index("base power");
power = parameters->parameters[bpi];
@@ -142,7 +146,7 @@ void dump_parameter_bundle(struct parameter_bundle *para)
printf("Value\t\tName\n");
for (it = param_index.begin(); it != param_index.end(); it++) {
index = it->second;
- printf("%5.2f\t\t%s\n", para->parameters[index], it->first.c_str());
+ printf("%5.2f\t\t%s (%i)\n", para->parameters[index], it->first.c_str(), index);
}
printf("\n");
diff --git a/parameters/parameters.h b/parameters/parameters.h
index 0bcee0c..94b795a 100644
--- a/parameters/parameters.h
+++ b/parameters/parameters.h
@@ -23,9 +23,10 @@ struct parameter_bundle
vector<double> parameters;
};
+extern struct parameter_bundle all_parameters;
extern map <string, int> param_index;
-extern struct parameter_bundle all_parameters;
+extern int get_param_index(const char *param);
extern void register_parameter(const char *name, double default_value = 0.00);