Changes in cpufreq_06.sh to calculate summatory and
average of frequency measurements.

Bug: The tests for frequency deviation always
fails with 'Err'
Cause and solution:
In the function 'compute_freq_ratio' the frequency
is stored in an array of variables by indirect reference
(http://www.tldp.org/LDP/abs/html/ivr.html)
but the variable 'index' that points to next element
in the array is initialized to 0 every time
hence overriding the values. The same happens for the
function 'compute_freq_ratio_sum' where the 'index'
variable is always initialized to 0 and the variable
'sum' is always set to 0 not adding the subsequent
values. Hence these initializations must be deleted
from those functions and written into the
'function check_deviation' for keeping
the correct values of frequency and calculations of
average and summatory.
With these changes the tests can now calculate
the real values of average for the frequencies
and the deviations can be tested and the tests
now passes.

Signed-off-by: Saul Romero <saul.rom...@arm.com>
---
 cpufreq/cpufreq_06.sh | 17 +++--------------
 1 file changed, 3 insertions(+), 14 deletions(-)

diff --git a/cpufreq/cpufreq_06.sh b/cpufreq/cpufreq_06.sh
index b323dc8..8f1dc22 100755
--- a/cpufreq/cpufreq_06.sh
+++ b/cpufreq/cpufreq_06.sh
@@ -31,7 +31,6 @@ CPUCYCLE=../utils/cpucycle
 freq_results_array="results"

 compute_freq_ratio() {
-    index=0
     cpu=$1
     freq=$2

@@ -49,25 +48,18 @@ compute_freq_ratio() {
 }

 compute_freq_ratio_sum() {
-    index=0
-    sum=0
-
     res=$(eval echo \$$freq_results_array$index)
     sum=$(echo $sum $res | awk '{ printf "%f", $1 + $2 }')
     index=$((index + 1))
-
 }

 __check_freq_deviation() {
     res=$(eval echo \$$freq_results_array$index)
-
     if [ ! -z "$res" ]; then
         # compute deviation
         dev=$(echo $res $avg | awk '{printf "%.3f", (($1 - $2) / $2) * 100}')
-
         # change to absolute
         dev=$(echo $dev | awk '{ print ($1 >= 0) ? $1 : 0 - $1}')
-
         index=$((index + 1))
         res=$(echo $dev | awk '{printf "%f", ($dev > 5.0)}')

@@ -85,23 +77,20 @@ check_freq_deviation() {

     cpu=$1
     freq=$2
-
     check "deviation for frequency $(frequnit $freq)" __check_freq_deviation
-
 }

 check_deviation() {

     cpu=$1
-
     set_governor $cpu userspace
-
+    index=0
     for_each_frequency $cpu compute_freq_ratio
-
+    index=0;sum=0
     for_each_frequency $cpu compute_freq_ratio_sum

     avg=$(echo $sum $index | awk '{ printf "%.3f", $1 / $2}')
-
+    index=0
     for_each_frequency $cpu check_freq_deviation
 }

--
2.5.0

IMPORTANT NOTICE: The contents of this email and any attachments are 
confidential and may also be privileged. If you are not the intended recipient, 
please notify the sender immediately and do not disclose the contents to any 
other person, use it for any purpose, or store or copy the information in any 
medium. Thank you.

_______________________________________________
linaro-dev mailing list
linaro-dev@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/linaro-dev

Reply via email to