diff options
-rw-r--r-- | devices/ahci.cpp | 4 | ||||
-rw-r--r-- | devices/alsa.cpp | 2 | ||||
-rw-r--r-- | devices/backlight.cpp | 4 | ||||
-rw-r--r-- | devices/i915-gpu.cpp | 2 | ||||
-rw-r--r-- | devices/thinkpad-fan.cpp | 4 | ||||
-rw-r--r-- | parameters/learn.cpp | 4 | ||||
-rw-r--r-- | parameters/parameters.cpp | 34 | ||||
-rw-r--r-- | parameters/parameters.h | 3 |
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); |